1、标准对话框
Qt为开发者提供了一些可复用的对话框类型
Qt提供的可复用对话框全部继承自QDialog类
Qt中的标准对话框遵循相同的使用方式
2、消息对话框
消息对话框是应用程序中最常见的界面元素
消息对话框主要用于:
- 为用户提示重要信息
-强制用户进行操作选择
消息对话框的使用方式
QMessageBox中的实用函数
- QMessageBox:: question
- QMessageBox:: information
- QMessageBox: :warning
- QMessageBox:: critical
- QMessageBox:: about
3、文件对话框
文件对话框常用于以下情形
- Open Mode
应用程序中需要用户打开一个外部的文件
- Save Mode
应用程序中需要将当前内容存储于用户指定的外部文件中
文件对话框的使用方式
文件类型过滤器
-在文件对话框中可以通过文件后缀定义过滤器
-过滤器定义规则:
显示名(*. 后缀1 *. 后缀2…*. 后缀N)
例如:
QFileDialog中的实用函数
- QFileDialog:: getOpenFileName
- QFileDialog:: getOpenFileNames
- Qfiledialog:: getSaveFileName
4、编程实验
消息、文件对话框使用实例 19-1.pro
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.cpp
#include "Widget.h"
#include <QDebug>
#include <QMessageBox>
#include <QFileDialog>
Widget::Widget(QWidget *parent) : QWidget(parent),
SimpleMsgBtn(this), CustomMsgBtn(this), OpenFileBtn(this), SaveFileBtn(this)
{
SimpleMsgBtn.setText("Simple Message Dialog");
SimpleMsgBtn.move(90, 50);
SimpleMsgBtn.resize(200, 30);
CustomMsgBtn.setText("Custom Message Dialog");
CustomMsgBtn.move(90, 100);
CustomMsgBtn.resize(200, 30);
OpenFileBtn.setText("Open File Dialog");
OpenFileBtn.move(90, 150);
OpenFileBtn.resize(200, 30);
SaveFileBtn.setText("Save File Dialog");
SaveFileBtn.move(90, 200);
SaveFileBtn.resize(200, 30);
// resize(200, 220);
setFixedSize(400, 320);
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);
msg.setText("This is a message dialog!");
msg.exec();
}
void Widget::CustomMsgBtn_Clicked()
{
QMessageBox msg(this);
msg.setWindowTitle("Window Title");
msg.setText("This is a detail message dialog!");
msg.setIcon(QMessageBox::Information);
msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel | QMessageBox::YesToAll); //这些步骤都用information直接代替
if( msg.exec() == QMessageBox::Ok )
{
qDebug() << "Ok button is clicked!";
}
}
void Widget::OpenFileBtn_Clicked()
{
QFileDialog dlg(this);
dlg.setAcceptMode(QFileDialog::AcceptOpen);
dlg.setFilter("Text(*.txt)");
dlg.setFileMode(QFileDialog::ExistingFiles);
if( dlg.exec() == QFileDialog::Accepted )
{
QStringList fs = dlg.selectedFiles();
for(int i=0; i<fs.count(); i++)
{
qDebug() << fs[i];
}
}
}
void Widget::SaveFileBtn_Clicked()
{
QFileDialog dlg(this);
dlg.setAcceptMode(QFileDialog::AcceptSave);
dlg.setFilter("Text(*.txt)");
if( dlg.exec() == QFileDialog::Accepted )
{
QStringList fs = dlg.selectedFiles();
for(int i=0; i<fs.count(); i++)
{
qDebug() << fs[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();
}
5、小结
Qt中提供了多个可复用的对话框类型
-继承于QDialog类型
-遵循相同的使用方式
QMessageBox用于提示重要的程序信息
QFileDialog用于获取系统中的文件路径