【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox

简介: 【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox

Qt窗口 | 标准对话框 | 消息对话框QMessageBox

一、QMessageBox介绍

1. 简介

在Qt中,可以使用QMessageBox类来创建和显示消息对话框。QMessageBox提供了各种类型的消息对话框,包括信息消息、警告消息、错误消息和询问消息等。

2. 静态成员函数

静态成员函数QMessageBox::information、QMessageBox::warning、QMessageBox::critical和QMessageBox::question分别创建信息、警告、错误和询问消息对话框。

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

二、QMessageBox的使用

1. 创建QMainWindow窗口

步骤参考文章【Qt 学习笔记】Qt窗口 | Qt窗口介绍 | QMainwindow类及各组件介绍

在文章中详细介绍了如何创建一个QMainWindow窗口


2. 创建按钮触发对话框

创建按钮及生成槽函数

3. 编辑消息对话框(QMessageBox生成按钮)

编辑槽函数,进行新建消息对话框。

void MainWindow::on_pushButton_clicked()
{
    //创建消息对话框
    QMessageBox * messageBox = new QMessageBox(this);
    //设置对话框标题
    messageBox->setWindowTitle("消息对话框");
    //设置对话框中的文本
    messageBox->setText("消息对话框的文本");
    //设置对话框的图标
    messageBox->setIcon(QMessageBox::Warning);
    //添加对话框内的按钮(按钮有QMessageBox自己生成)
    messageBox->setStandardButtons(QMessageBox::Ok | QMessageBox::Save);

    //模态对话框,非模态对话框使用show(),QMessageBox常用于模态
    //messageBox->show();
    messageBox->exec();
    //关闭窗口释放内存
    messageBox->setAttribute(Qt::WA_DeleteOnClose);
}

Ctrl+左键点击QMessageBox查看StandardButton按钮属性

enum StandardButton {
     // keep this in sync with QDialogButtonBox::StandardButton and QPlatformDialogHelper::StandardButton
        NoButton           = 0x00000000,
        Ok                 = 0x00000400,
        Save               = 0x00000800,
        SaveAll            = 0x00001000,
        Open               = 0x00002000,
        Yes                = 0x00004000,
        YesToAll           = 0x00008000,
        No                 = 0x00010000,
        NoToAll            = 0x00020000,
        Abort              = 0x00040000,
        Retry              = 0x00080000,
        Ignore             = 0x00100000,
        Close              = 0x00200000,
        Cancel             = 0x00400000,
        Discard            = 0x00800000,
        Help               = 0x01000000,
        Apply              = 0x02000000,
        Reset              = 0x04000000,
        RestoreDefaults    = 0x08000000,

        FirstButton        = Ok,                // internal
        LastButton         = RestoreDefaults,   // internal

        YesAll             = YesToAll,          // obsolete
        NoAll              = NoToAll,           // obsolete

        Default            = 0x00000100,        // obsolete
        Escape             = 0x00000200,        // obsolete
        FlagMask           = 0x00000300,        // obsolete
        ButtonMask         = ~FlagMask          // obsolete
    };

4. 编辑消息对话框(QPushButton创建对话框按钮)

void MainWindow::on_pushButton_2_clicked()
{
    //创建消息对话框
    QMessageBox * messageBox = new QMessageBox(this);
    //设置对话框标题
    messageBox->setWindowTitle("消息对话框");
    //设置对话框中的文本
    messageBox->setText("消息对话框的文本");
    //设置对话框的图标
    messageBox->setIcon(QMessageBox::Warning);
    //使用QPushButton的方式创建按钮
    QPushButton* button = new QPushButton("按钮",messageBox);
    messageBox->addButton(button,QMessageBox::AcceptRole);
    //模态对话框,非模态对话框使用show(),QMessageBox常用于模态
    //messageBox->show();
    messageBox->exec();
    //关闭窗口释放内存
    messageBox->setAttribute(Qt::WA_DeleteOnClose);
}

Ctrl+左键点击QMessageBox查看StandardButton按钮属性

enum ButtonRole {
        // keep this in sync with QDialogButtonBox::ButtonRole and QPlatformDialogHelper::ButtonRole
        InvalidRole = -1,
        AcceptRole,
        RejectRole,
        DestructiveRole,
        ActionRole,
        HelpRole,
        YesRole,
        NoRole,
        ResetRole,
        ApplyRole,

        NRoles
    };

5. 编辑消息对话框(快速创建消息对话框)

//警告
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);
}
目录
相关文章
|
3月前
|
C++ Windows
Qt 窗口置顶
Qt 窗口置顶
106 1
|
3月前
|
开发者
【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念
【Qt 学习笔记】Qt系统相关 | Qt事件 | 事件的介绍及基本概念
202 4
|
3月前
【qt】视口和窗口坐标
【qt】视口和窗口坐标
30 0
|
3月前
|
算法 数据安全/隐私保护
【qt】启动窗口的玩法
【qt】启动窗口的玩法
29 0
|
3月前
【qt】多窗口开发
【qt】多窗口开发
57 0
|
3月前
【qt】自定义对话框(2)
【qt】自定义对话框(2)
24 0
|
3月前
【qt】自定义对话框(1)
【qt】自定义对话框(1)
30 0
|
4月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
180 1
Qt(C++)开发一款图片防盗用水印制作小工具