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