QT学习笔记—常用标准对话框

对话框QDialog

模态对话框
未关闭时不能和应用程序其他窗口交互的对话框

建立模态对话框:

QDialog *dialog = new QDialog(this);
dialog->setModal(true);   //设置为模态的方法
dialog->show();

QDialog dialog(this);
dialog.exec();   //进入消息循环,进行阻塞

非模态对话框

未关闭时依然可以和应用程序的其他窗口交互的对话框

标准对话框

Qt提供常用的标准对话框都继承自QDialog类。标准对话提供的方法基本是静态成员函数,直接可以通过类名访问。

颜色对话框

头文件:

#include <QColorDialog>

常用获取颜色方法:

该方法是静态函数,可以直接通过类名访问

[static] QColor QColorDialog::getColor(const QColor &initial = Qt::white, QWidget *parent = Q_NULLPTR, const QString &title = QString(), ColorDialogOptions options = ColorDialogOptions());
//initial 颜色 默认是Qt::white白色
//parent 颜色对话框的父亲
//title 颜色对话框的标题

示例:

void Widget::on_pushButton_clicked()
{
    
    
    QColor color = QColorDialog::getColor(Qt::yellow, this, tr("颜色对话框"));
    qDebug() << "颜色:" << color;
}

在这里插入图片描述


文件对话框

头文件:

#include <QFileDialog>

常用静态方法:

  • 打开单个文件
QString getOpenFileName(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = Q_NULLPTR, Options options = Options());
//参数1 父类
//参数2 文件对话框标题
//参数3 默认打开文件夹
//参数4 要打开的文件类型,过滤掉其他不是要打开的文件类型的文件
......
    
//返回值 : 打开的文件名
  • 打开多个文件:

    QStringList getOpenFileNames(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = Q_NULLPTR, Options options = Options())
    //参数和getOpenfile一致
    //返回值:字符串类型的list容器,包含了多个文件的文件名
    

示例:

void Widget::on_pushButton_2_clicked()
{
    
    
    QString  fileName = QFileDialog::getOpenFileName(this, tr("文件对话框"), "C:", tr("视频文件(*mp4 *mkv *rmvb)"));
    qDebug() << "file name :" << fileName;  //打印打开的文件名
}


在这里插入图片描述


字体对话框

用于选择字体

头文件:

#include <QFontDialog>

常用静态方法:

QFont getFont(bool *ok, QWidget *parent = Q_NULLPTR)

//参数1 判断是否获取成功字体
//参数2 设置父类

示例:

void Widget::on_pushButton_3_clicked()
{
    
    
    bool ok;
    QFont font = QFontDialog::getFont(&ok, this);  //获取字体
    if (ok)
    {
    
    
        ui->label->setFont(font);    //设置label的字体
    	qDebug() << font;
    }
   
}

在这里插入图片描述


输入对话框

头文件:

#include <QInputDialog>

常用静态成员方法:

  • 获取文本

    QString getText(QWidget *parent, const QString &title, const QString &label, QLineEdit::EchoMode mode = QLineEdit::Normal, const QString &text = QString(), bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone)
    //参数1 父类
    //参数2 对话框标题
    //参数3 输入框名称
    //参数4 输入的模式 分别有QLineEdit::Normal(正常模式)、QLineEdit::NoEcho(输入时输入框不显示)、                   QLineEdit::Password(密码模式)、QLineEdit::PasswordEchoOnEdit
    //参数5 输入框默认值
    //参数6 是否成功获取输入
    
    void Widget::on_pushButton_4_clicked()
    {
          
          
        bool ok;
    
        QString str = QInputDialog::getText(this, tr("输入字符串对话框"),tr("请输入用户名"), QLineEdit::Normal, tr("Ares"), &ok);
        if (ok)
        {
          
          
            qDebug() << str;
        }
    }
    
    

    QLineEdit::Normal:

在这里插入图片描述

QLineEdit::Password:

在这里插入图片描述

QLineEdit::NoEcho:

输入不显示

在这里插入图片描述

  • 获取浮点数
double getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags())
//参数1 父类
//参数2 标题
//参数3 输入框名称
//参数4 默认值
//参数5 输入最小值
//参数6 输入最大值
//参数7 箭头按钮的步进值
//参数8 是否获取成功
 double d_num = QInputDialog::getDouble(this, tr("浮点数输入对话框"), tr("请输入0-100之间的浮点数"), 0, 0, 100, 1, &ok);
if (ok)
{
    
    
    qDebug() << d_num;
}

在这里插入图片描述

  • 获取整数

    
    int getInt(QWidget *parent, const QString &title, const QString &label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags())
    //获取整数和获取浮点数差不多
    
  • 获取条目

    QString getItem(QWidget *parent, const QString &title, const QString &label, const QStringList &items, int current = 0, bool editable = true, bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone)
    
    
   QStringList myItems;
    myItems << "北京" << "上海" << "广州" << "深圳";
    QString item = QInputDialog::getItem(this, tr("条目输入对话框"), tr("请选择城市"), myItems, 1, true, &ok);
    if (ok)
    {
    
    
        qDebug() << item;
    }

在这里插入图片描述


消息对话框

消息对话框有6种,执行的声音是不相同的。

头文件:

#include <QMessageBox>

常用静态方法:

  • 提示对话框
StandardButton information(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton)
//参数1 父类
//参数2 对话框标题
//参数3 提示内容
//参数4  对话框按钮
//返回按下的按钮

按钮的类型:

在这里插入图片描述

void Widget::on_pushButton_5_clicked()
{
    
    
    int ret;

    ret = QMessageBox::information(this, tr("提示对话框"), tr("数值范围必须在-2048~2047之间"), QMessageBox::Ok);
    if (ret == QMessageBox::Ok)
    {
    
    
        qDebug() << "按下了ok按钮";
    }
}

在这里插入图片描述

  • 提问对话框

    StandardButton question(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = StandardButtons( Yes | No ), StandardButton defaultButton = NoButton)
    // 参数和提示对话框基本一致,默认是提供了yes和no两个按钮,可以设置成其他按钮
    
    ret = QMessageBox::question(this, tr("提问对话框"), tr("是否删除该文件?"));
    if (ret == QMessageBox::Yes)
    {
          
          
        qDebug() << "好的,已删除";
    }
    if (ret == QMessageBox::No)
    {
          
          
        qDebug() << "保留文件";
    }
    

在这里插入图片描述

  • 警告对话框

    StandardButton warning(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton)
    //默认提供的是Ok按钮
    
    ret = QMessageBox::warning(this, tr("警告对话框"), tr("程序无响应,即将自动关机"));
    if (ret == QMessageBox::Ok)
    {
          
          
        qDebug() << "关机";
    }
    

在这里插入图片描述

  • 错误对话框

    StandardButton critical(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton)
    
     ret = QMessageBox::critical(this, tr("错误对话框"), tr("发现严重错误, 是否关闭所有文件"), QMessageBox::YesAll);
    if (ret == QMessageBox::YesAll)
    {
          
          
        qDebug() << "已关闭";
    }
    

在这里插入图片描述

  • 关于对话框

    void about(QWidget *parent, const QString &title, const QString &text)
    
     QMessageBox::about(this, tr("关于"), tr("这是一首关于你的歌"));
    

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_36413982/article/details/107892267
今日推荐