【Qt】内置对话框

一.Qt内置对话框

Qt 提供了多种可复⽤的对话框类型,即 Qt 标准对话框。Qt标准对话框全部继承于QDialog类。常⽤标准对话框如下:

二.内置对话框分类

1.消息对话框 QMessageBox

1.1 概念

消息对话框是应⽤程序中最常⽤的界⾯元素。消息对话框主要⽤于为用户提⽰重要信息,强制用户进行选择操作。

1.2 静态成员函数

QMessageBox类中定义了静态成员函数,可以直接调⽤创建不同风格的消息对话框,其中包括:

静态成员函数 说明
Question ⽤于正常操作过程中的提问
Information ⽤于报告正常运⾏信息
Warning ⽤于报告⾮关键错误
Critical ⽤于报告严重错误

函数原型:

1.3 代码示例

eg1:问题提示消息对话框

代码:

cpp 复制代码
   //创建按钮
    QPushButton * btn=new QPushButton("Message dialog",this);

    //设置按钮大小和位置
    btn->resize(200,200);

    btn->move(300,300);

    //创建消息对话框
    QMessageBox *msg=new QMessageBox(this);

    //设置对话框标题
    msg->setWindowTitle("Warning");

    //设置对话框文本
    msg->setText("Error Message");

    //设置对话框类型
    msg->setIcon(QMessageBox::Question);

    //设置按钮
    msg->setStandardButtons(QMessageBox::Ok | QMessageBox::Close);

    //关联信号槽
    connect(btn,&QPushButton::clicked,[=](){
        msg->show();
    });

运行结果:

我们可以选择的按钮有:

eg2:错误提⽰消息对话框:

代码:(和上面除类型改变,几乎没区别)

cpp 复制代码
    //创建按钮
    QPushButton * btn=new QPushButton("Message dialog",this);

    //设置按钮大小和位置
    btn->resize(200,200);

    btn->move(300,300);

    //创建消息对话框
    QMessageBox *msg=new QMessageBox(this);

    //设置对话框标题
    msg->setWindowTitle("Warning");

    //设置对话框文本
    msg->setText("Error Message");

    //设置对话框类型
    msg->setIcon(QMessageBox::Warning);

    //设置按钮
    msg->setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel);

    //关联信号槽
    connect(btn,&QPushButton::clicked,[=](){
        msg->show();
    });

运行结果:

eg2:利用函数快速创建消息对话框

cpp 复制代码
//警告
void MainWindow::on_pushButton_clicked()
{
	//参数1:父窗口的地址 参数2:对话框窗口标题 参数3:对话框内的文本 参数4:添加按钮
    QMessageBox::warning(this,"对话框标题","对话框文本",QMessageBox::Ok | QMessageBox::Save);
}
//报错
void MainWindow::on_pushButton_2_clicked()
{
    QMessageBox::critical(this,"对话框标题","对话框文本",QMessageBox::Ok | QMessageBox::Save);
}
//消息
void MainWindow::on_pushButton_3_clicked()
{
    QMessageBox::information(this,"对话框标题","对话框文本",QMessageBox::Ok | QMessageBox::Save);
}
//问题
void MainWindow::on_pushButton_4_clicked()
{
    QMessageBox::question(this,"对话框标题","对话框文本",QMessageBox::Ok | QMessageBox::Save);
}

运行结果:

2.颜⾊对话框 QColorDialog

2.1 概念

QColorDialog是一个对话框类,用于选择颜色。

2.2 常用方法

1、 //创建对象的同时设置⽗对象

cpp 复制代码
QColorDialog(QWidget* parent = nullptr) 

2、//创建对象的同时通过QColor 对象设置默认颜⾊和⽗对象

cpp 复制代码
QColorDialog(const QColor &initial, QWidget* parent =nullptr) 

3、//设置当前颜⾊对话框

cpp 复制代码
void setCurrentColor(const QColor &color) 

4、 //获取当前颜⾊对话框

cpp 复制代码
QColor currentColor()const

5 、 //打开颜⾊ 选择对话框,并返回⼀个QColor对象

cpp 复制代码
QColor getColor(const QColor &initial = Qt::white,QWidget *parent = nullptr,

const QString  &title = QString(), QColorDialog::ColorDialogOptions options = ColorDialogOptions())

参数说明:

initial:设置默认颜色

parent:设置⽗对象

title:设置对话框标题

options:设置选项

2.3 代码示例

eg1:

cpp 复制代码
  //创建按钮
    QPushButton* btn=new QPushButton("get ColorDialog",this);

     //设置按钮大小
    btn->resize(200,100);

    //创建颜色对话框
    QColorDialog* dia=new QColorDialog(this);

     //编辑信号槽函数
    connect(btn,&QPushButton::clicked,[=](){
        //使用getColor函数,打开颜色对话框,并设置默认颜色
        QColor color=dia->getColor(QColor(0,0,255));

        qDebug()<<color.red();
        qDebug()<<color.green();
        qDebug()<<color.blue();

    });

运行结果:

eg2:

cpp 复制代码
//创建按钮
     QPushButton* btn=new QPushButton("get ColorDialog",this);

     //设置按钮大小
    btn->resize(200,100);

     //创建颜色对话框
     QColorDialog* dia=new QColorDialog(this);

      //编写槽函数
     connect(btn,&QPushButton::clicked,[=](){
         //设置颜色
         dia->setCurrentColor(QColor(100,100,100));

         //打开颜色对话框
         dia->open();
     });

运行结果:

3.⽂件对话框 QFileDialog

3.1 概念

文件对话框应用于打开一个外部文件或者将当前内容保存至外部文件。

3.2 常用方法

1.打开一个文件

cpp 复制代码
QString getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(),
QString*selectedFilter =nullptr,QFileDialog::Options options=Options())

2.打开多个文件

cpp 复制代码
QString getOpenFileNames(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(),
QString*selectedFilter =nullptr,QFileDialog::Options options=Options())

3.保存文件

cpp 复制代码
QString getSaveFileName (QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(),
QString*selectedFilter =nullptr,QFileDialog::Options options=Options())

参数含义:

参数1:parent ⽗亲

参数2:caption 对话框标题

参数3:dir 默认打开的路径

参数4:filter ⽂件过滤器

3.3 代码示例

eg1:打开文件

cpp 复制代码
//创建按钮
    QPushButton* btn=new QPushButton(this);

    //创建文件对话框
    QFileDialog* dia=new QFileDialog(this);

    //编写槽函数
    connect(btn,&QPushButton::clicked,[=](){
        //调用函数   getopenfilename
        QString str=dia->getOpenFileName(this,"file","D:\coad\text_2_20");
        qDebug()<<str;
    });

运行结果:

eg2:保存文件

cpp 复制代码
   //创建按钮
        QPushButton* btn=new QPushButton(this);

        //创建文件对话框
       QFileDialog* dia=new QFileDialog(this);

       connect(btn,&QPushButton::clicked,[=](){
           QString str=dia->getSaveFileName(this,
                                            "save file",
                                            "D:\coad\text.c_1_2");
           qDebug()<<str;
       });

运行结果:

要想要真正实现保存文件功能,还需要应用file,后面我们会在file章节进行功能完善。

4.字体对话框 QFontDialog

4.1 概念

用于选择字体的对话框

4.2 常用方法

1.QFontDialog(parent):创建一个新的 QFontDialog 对象,parent 是可选的父窗口。

cpp 复制代码
QFontDialog * dialog = new QFontDialog(this);

2.getFont():静态函数,显示字体对话框并返回用户选择的字体。返回值是一个 QFont 对象。

cpp 复制代码
bool ok =false;
QFont font = QFontDialog::getFont(&ok);

3.setFont(font):设置默认显示的字体为 font。

cpp 复制代码
QLabel *label = new QLabel(this);
label->setFont(font);
4.3 代码示例

eg:

cpp 复制代码
 QPushButton* btn=new QPushButton("Font",this);

    connect(btn,&QPushButton::clicked,[=](){
        //使用静态方法getfont, 打开字体对话框并返回 初值格式
        bool flag;
        QFont font=QFontDialog::getFont(&flag,QFont("华文行楷",37));
        //打印字体
        qDebug()<<font.family().toUtf8().data();
        //打印字号
        qDebug()<<font.pointSize();
        //判断是否加粗
        qDebug()<<font.bold();
    });

运行结果:

5.输⼊对话框 QInputDialog

5.1 概念

在Qt中,QInputDialog是一个对话框类,用于获取用户输入的数据。它提供了多种输入类型的方法,包括文本、整数、浮点数和选项。使用时只需包含QInputDialog头文件,然后使用适当的方法调用它即可。

5.2 常用方法

1.getInt:整型输⼊数据对话框

cpp 复制代码
int result = QInputDialog::getInt(this,"整数对话框","请输入整数:");

2.getDouble:双精度浮点型输入数据对话框

cpp 复制代码
double result = QInputDialog::getDouble(this,"浮点数对话框","请输入浮点数:");

3.getItem:选择条目型输⼊对话框

cpp 复制代码
QString result = QInputDialog::getItem(this,"条目对话框","请输入条目:",item);

参数说明:

parent:父节点

title:对话框标题

label:对话框标签

items:可供选择的条⽬

5.3 代码示例

eg:

在designer上手动创建三个按钮

编写槽函数:

cpp 复制代码
void MainWindow::on_pushButton_clicked()
{
    int result = QInputDialog::getInt(this,"Int Dialog","input int:");
        qDebug()<<result;
}

void MainWindow::on_pushButton_2_clicked()
{
    double result = QInputDialog::getDouble(this,"Double Dialog","input double:");
        qDebug()<<result;
}

void MainWindow::on_pushButton_3_clicked()
{
    //创建一个string链表
        QStringList item ;
        //进行尾插
        item.push_back("book");
        item.push_back("pen");
        item.push_back("pencil");
        item.push_back("eraser");
        item.push_back("phone");
        QString result = QInputDialog::getItem(this,"Item Dialog","input item:",item);
        qDebug()<<result;

运行结果:

点击INT按钮:

点击Double按钮:

点击Item按钮:

相关推荐
何曾参静谧1 分钟前
「QT」文件类 之 QTextStream 文本流类
开发语言·qt
liyuanbhu5 分钟前
Halcon HImage 与 Qt QImage 的相互转换(修订版)
qt·计算机视觉·halcon
机器视觉知识推荐、就业指导1 小时前
基于Qt/C++与OpenCV库 实现基于海康相机的图像采集和显示系统(工程源码可联系博主索要)
c++·qt·opencv
机器视觉知识推荐、就业指导1 小时前
使用 Qt 实现基于海康相机的图像采集和显示系统(不使用外部视觉库,如Halcon\OpenCv)[工程源码联系博主索要]
数码相机·qt
Qter_Sean6 小时前
自己动手写Qt Creator插件
开发语言·qt
何曾参静谧6 小时前
「QT」文件类 之 QIODevice 输入输出设备类
开发语言·qt
yyqzjw13 小时前
【qt】控件篇(Enable|geometry)
开发语言·qt
csdn_kike13 小时前
QT Unknown module(s) in QT 以及maintenance tool的更详细用法(qt6.6.0)
开发语言·qt
西西弗Sisyphus13 小时前
Qt 获取当前系统中连接的所有USB设备的信息 lsusb版
qt
kaixin_learn_qt_ing15 小时前
Qt---双缓冲绘图
qt