1. Qt标准对话框
- Qt为开发者提供了一些可复用的对话框类型
- Qt提供的可复用对话框全部继承自QDialog类
- Qt中的对话框的使用方式和QDialog完全一致
2. 标准对话框的使用步骤
①定义对话框
DialogType dlg(this) ;
②设置对话框属性
dlg.setPropertyXXX(value);
③打开对话框(判断对话框返回值)
dlg.exec()==DialogType::value
④获取对话框数据
Type v = dlg.getDialogValue();
⑤处理对话框数据
3.消息对话框
①用于:为用户提示重要信息,强制用户进行选择
②消息对话框中的实用静态函数
①QMessageBox::question(…) //创建带有“是/否”按钮的消息框
②QMessageBox::information(…) //创建带有“确定”或“取消”按钮的消息框
③QMessageBox::warning(…) //创建一个警告对话框
④QMessageBox::critical(…) //创建一个严重错误对话框
⑤QMessageBox::about(…) //创建“关于”对话框
③上述静态成员函数的返回值
- 静态成员函数的返回值就是标准的按钮,
- 他们是枚举类型
- 可以使用这个返回值来判断用户点击了哪个按钮
4.实例
①一般步骤:
//1、构造消息对话框对象 QmessageBox msg(this); //2、设置消息对话框的属性 msg.setWindowTitle("Window Title"); msg.setText("This is a detail message dialog!"); msg.setIcon(QMessageBox::Information); msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel | QMessageBox::YesToAll); //3、读取对话框数据并根据返回值处理 if( msg.exec() == QMessageBox::Ok ) { qDebug() << "Ok button is clicked!"; }
②实例演示
新建一个QWidget程序
widget.h
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QPushButton> class Widget : public QWidget { Q_OBJECT private: QPushButton question_MsgBtn; QPushButton infomation_MsgBtn; QPushButton warning_MsgBtn; QPushButton critical_MsgBtn; QPushButton about_MsgBtn; private slots://定义为私有的槽函数,只有在类的内部可以访问 void question_Clicked(); //小技巧:单击函数名,同时按下Alt+Enter键 选择在widght中更添加定义可以直接编写槽函数 void infomation_Clicked(); void warning_Clicked(); void critical_Clicked(); void about_Clicked(); public: Widget(QWidget *parent = 0); ~Widget(); }; #endif // WIDGET_H
widget.cpp
#include "widget.h" #include <QMessageBox> #include <QDebug> Widget::Widget(QWidget *parent) : QWidget(parent),question_MsgBtn(this),infomation_MsgBtn(this), warning_MsgBtn(this),critical_MsgBtn(this),about_MsgBtn(this) { question_MsgBtn.setText("question_MsgBtn Message Dialog"); question_MsgBtn.move(20, 20); question_MsgBtn.resize(210, 30); infomation_MsgBtn.setText("infomation_MsgBtn Message Dialog"); infomation_MsgBtn.move(20, 70); infomation_MsgBtn.resize(210, 30); warning_MsgBtn.setText("warning_MsgBtn Message Dialog"); warning_MsgBtn.move(20, 120); warning_MsgBtn.resize(210, 30); critical_MsgBtn.setText("critical_MsgBtn Message Dialog"); critical_MsgBtn.move(20, 170); critical_MsgBtn.resize(210, 30); about_MsgBtn.setText("about_MsgBtn Message Dialog"); about_MsgBtn.move(20,230); about_MsgBtn.resize(210,30); resize(250, 290); setFixedSize(250, 290); connect(&question_MsgBtn,SIGNAL(clicked()),this ,SLOT(question_Clicked())); connect(&infomation_MsgBtn,SIGNAL(clicked()),this ,SLOT(infomation_Clicked())); connect(&warning_MsgBtn,SIGNAL(clicked()),this ,SLOT(warning_Clicked())); connect(&critical_MsgBtn,SIGNAL(clicked()),this ,SLOT(critical_Clicked())); connect(&about_MsgBtn,SIGNAL(clicked()),this ,SLOT(about_Clicked())); } Widget::~Widget() { } void Widget::question_Clicked() { QMessageBox msg(this); msg.setText("This is a detail message dialog!"); msg.setIcon(QMessageBox::Question); msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel | QMessageBox::YesToAll); switch(msg.exec()){ case (QMessageBox::Ok) : //判断哪个按键被按下 { qDebug() << "Ok button is clicked!"; break; } case (QMessageBox::Cancel) ://判断哪个按键被按下 { qDebug() << "Cancel button is clicked!"; break; } case QMessageBox::YesToAll : //判断哪个按键被按下 { qDebug() << "YesToAll button is clicked!"; break; } } } void Widget::infomation_Clicked() { QMessageBox msg(this); msg.setText("This is infomation message dialog!"); msg.setIcon(QMessageBox::Information); msg.setStandardButtons(QMessageBox::Help | QMessageBox::No | QMessageBox::Yes); switch(msg.exec()){ case (QMessageBox::Help) : //判断哪个按键被按下 { qDebug() << "Help button is clicked!"; break; } case (QMessageBox::No) ://判断哪个按键被按下 { qDebug() << "No button is clicked!"; break; } case QMessageBox::Yes : //判断哪个按键被按下 { qDebug() << "Yes button is clicked!"; break; } } } void Widget::warning_Clicked() { // } void Widget::critical_Clicked() { } void Widget::about_Clicked() { }
main.cpp
#include "widget.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.show(); return a.exec(); }
xiaoguotu: