欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-16 18:33:40
...

对话框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;
}

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


文件对话框

头文件:

#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;  //打印打开的文件名
}


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


字体对话框

用于选择字体

头文件:

#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;
    }
   
}

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


输入对话框

头文件:

#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:

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

QLineEdit::Password:

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

QLineEdit::NoEcho:

输入不显示

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

  • 获取浮点数
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;
}

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

  • 获取整数

    
    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;
    }

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


消息对话框

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

头文件:

#include <QMessageBox>

常用静态方法:

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

按钮的类型:

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

void Widget::on_pushButton_5_clicked()
{
    int ret;

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

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

  • 提问对话框

    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() << "保留文件";
    }
    

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

  • 警告对话框

    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() << "关机";
    }
    

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

  • 错误对话框

    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() << "已关闭";
    }
    

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

  • 关于对话框

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

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

相关标签: QT学习