1、标准对话框
1.1、
Qt为开发中提供了一下
可复用的对话框类型
1.2、
Qt提供的可复用对话框类型
全部继承自QDialog类
1.3、
Qt中的标准对话框
遵循相同的使用方式
2、消息对话框
2.1、
消息对话框是程序中
最常用的界面元素
2.2、
消息对话框主要用于
2.2.1、
为用户提示重要信息
2.2.2、
强制用户进行操作选择
2.3、
消息对话框是使用方式
2.4、
QMessageBox中的实用函数(里面有多个参数,一个函数直接创建某个类型的对话框)
3、文件对话框
3.1、
文件对话框常用于以下情形
3.1.1、
Open Mode:
用于程序需要
打开一个外部文件
3.2、
Save Mode:
应用程序需要
将当前内容
存储于用户
指定的外部文件中
3.3、
文件对话框的使用方式
3.4、文件类型过滤器
3.4.1、
在文件对话框可以
根据文件后缀
定义过滤器
3.4.2、
过滤器定义规则
3.5、
QFileDialog中的实用函数
widget.h
#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
widget.cpp
#include "widget.h"
#include <QMessageBox>
#include <QFileDialog>
#include <QDebug>
#include <QStringList>
Widget::Widget(QWidget *parent)
: QWidget(parent), SimpleMsgBtn(this), CustomMsgBtn(this), OpenFileBtn(this), SaveFileBtn(this)
{
SimpleMsgBtn.setText("SimpleMsgBtn");
SimpleMsgBtn.move(20, 20);
SimpleMsgBtn.resize(160, 30);
CustomMsgBtn.setText("Custom MessageBtn");
CustomMsgBtn.move(20, 70);
CustomMsgBtn.resize(160, 30);
OpenFileBtn.setText("OpenFileDialog");
OpenFileBtn.move(20, 120);
OpenFileBtn.resize(160, 30);
SaveFileBtn.setText("SaveFileDialog");
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);//this指的是当前对话框的父窗口,有父类对象管理子类的生命周期。
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);
int ret = msg.exec();
if(ret == QMessageBox::Ok)//3、显示
{
qDebug() << "ok is clicked";
}
else if(ret == QMessageBox::Close)//3、显示
{
qDebug() << "ok is Close";
}
else if(ret == QMessageBox::Cancel)
{
qDebug() << "ok is Cancel";
}
}
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)//显示,这是用户操作成功的返回值。
{
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);//注意加s表示可以打开多个文件。
if(dlg.exec() == QFileDialog::Accepted)//3、显示
{
QStringList list = dlg.selectedFiles();
for(int i=0; i<list.count(); i++)
qDebug() << list[i];
}
}
Widget::~Widget()
{
}
main.cpp
#include <QtGui/QApplication>
#include "widget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
4、小结
4.1、
Qt中提供了多个
可复用的对话框类型
A、
继承QDialog类型
B、
遵循相同的使用方式
4.2、
QMessageBox
用于提示重要的程序信息
4.3、
QFileDialog
用于获取系统中的文件路径