一、标准对话框
1、Qt为开发中提供了一下可复用的对话框类型
2、Qt提供的可复用对话框类型全部继承自QDialog类
3、Qt中的标准对话框遵循相同的使用方式
二、消息对话框
1、消息对话框是程序中最常用的界面元素
2、消息对话框主要用于
(1)、为用户提示重要信息
(2)、强制用户进行操作选择
3、消息对话框是使用方式
4、QMessageBox中的实用函数(里面有多个参数,一个函数直接创建某个类型的对话框)
三、文件对话框
1、文件对话框常用于以下情形
(1)、Open Mode:用于程序需要打开一个外部文件
2、Save Mode:应用程序需要将当前内容存储于用户指定的外部文件中
2、文件对话框的使用方式
3、文件类型过滤器
(1)、在文件对话框可以根据文件后缀定义过滤器
(2)、过滤器定义规则
4、QFileDialog中的实用函数
#ifndef WIDGET_H #define WIDGET_H #include <QtGui/QWidget> #include <QPushButton> class Widget : public QWidget { Q_OBJECT private: QPushButton SimpleMsgBtn; QPushButton CustomMsgBtn; QPushButton OpenFileBtn; QPushButton SaveFileBtn; private slots: void SimpleMsgBtn_Clicked(); void CustomMsgBtn_Clicked(); void OpenFileBtn_Clicked(); void SaveFileBtn_Clicked(); public: Widget(QWidget *parent = 0); ~Widget(); }; #endif // WIDGET_H
#include "Widget.h" #include <QMessageBox> #include <QFileDialog> #include <QDebug> Widget::Widget(QWidget *parent) : QWidget(parent), SimpleMsgBtn(this), CustomMsgBtn(this), OpenFileBtn(this), SaveFileBtn(this) { SimpleMsgBtn.setText("Simple MessageBox"); SimpleMsgBtn.move(20, 20); SimpleMsgBtn.resize(160, 30); CustomMsgBtn.setText("Custom MessageBox"); CustomMsgBtn.move(20, 70); CustomMsgBtn.resize(160, 30); OpenFileBtn.setText("OpenFile Dialog"); OpenFileBtn.move(20, 120); OpenFileBtn.resize(160, 30); SaveFileBtn.setText("SaveFile Dialog"); SaveFileBtn.move(20, 170); SaveFileBtn.resize(160, 30); resize(200, 200); setFixedSize(200, 220); connect(&SimpleMsgBtn, SIGNAL(clicked()), this, SLOT(SimpleMsgBtn_Clicked())); connect(&CustomMsgBtn, SIGNAL(clicked()), this, SLOT(CustomMsgBtn_Clicked())); connect(&OpenFileBtn, SIGNAL(clicked()), this, SLOT(OpenFileBtn_Clicked())); connect(&SaveFileBtn, SIGNAL(clicked()), this, SLOT(SaveFileBtn_Clicked())); } void Widget::SimpleMsgBtn_Clicked() { QMessageBox msg(this);//1.定义 msg.setText("SimpleMsgBtn");//2.设置 msg.exec();//3.显示 } void Widget::CustomMsgBtn_Clicked() { QMessageBox msg(this);//1.定义 msg.setWindowTitle("CustomMsgBtn");//2.设置 msg.setText("This a detail MessageBox"); msg.setIcon(QMessageBox::Information); msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel | QMessageBox::Close); //下面一句相当于前面五句 //int ret = QMessageBox::information(this, "CustomMsgBtn" ,"This a detail MessageBox", QMessageBox::Ok | QMessageBox::Cancel | QMessageBox::Close); if(msg.exec() == QMessageBox::Ok)//3.显示 { qDebug() << "Ok is clicked"; } } void Widget::OpenFileBtn_Clicked() { QFileDialog dlg(this);//1.定义 dlg.setAcceptMode(QFileDialog::AcceptOpen);//2.设置 dlg.setNameFilter("Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml);;All(*.*)");//过滤器 dlg.setFileMode(QFileDialog::ExistingFiles);//注意ExistingFiles加s表示可以打开多个文件 if(dlg.exec()==QFileDialog::Accepted)//3.显示 { QStringList list = dlg.selectedFiles(); for(int i=0; i<list.count(); i++) { qDebug() << list[i]; } } } void Widget::SaveFileBtn_Clicked() { QFileDialog dlg(this);//1.定义 dlg.setAcceptMode(QFileDialog::AcceptSave);//2.设置 dlg.setNameFilter("Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml);;All(*.*)");//过滤器 dlg.setFileMode(QFileDialog::ExistingFiles);//注意ExistingFiles加s表示可以打开多个文件 if(dlg.exec()==QFileDialog::Accepted)//3.显示 { QStringList list = dlg.selectedFiles(); for(int i=0; i<list.count(); i++) { qDebug() << list[i]; } } } Widget::~Widget() { }
#include <QtGui/QApplication> #include "Widget.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.show(); return a.exec(); }
四、小结
(1)、Qt中提供了多个可复用的对话框类型
A、继承QDialog类型
B、遵循相同的使用方式
(2)、QMessageBox用于提示重要的程序信息
(3)、QFileDialog用于获取系统中的文件路径