一、标准对话框
Qt为开发者提供了一些可复用的对话框类型
Qt提供的可复用对话框全部继承自QDialog类
Qt中的标准对话框遵循相同的使用方式
二、消息对话框
消息对话框是应用程序中最常见的界面元素
消息对话框主要用于
为用户提示重要消息
强制用户进行操作选择
消息对话框的使用方式
QMessageBox中的实用函数(课后练习)
QMessageBox::question
QMessageBox::information
QMessageBox::warning
QMessageBox::critical
QMessageBox::about
三、文本对话框
文件对话框常用于以下情形
Open Mode
应用程序中需要用户打开一个外部文件
Save Mode
应用程序中需要将当前内容存储于用户指定的外部文件中
文本对话框的使用方式
四、文件对话框
文本类型过滤器
在文件对话框中可以通过文件后缀定义过滤器
过滤器定义规则:
四、文件对话框使用实例19-1.pro
#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(20, 20);
SimpleMsgBtn.resize(160, 30);
CustomMsgBtn.setText("Custom Message Dialog");
CustomMsgBtn.move(20, 70);
CustomMsgBtn.resize(160, 30);
OpenFileBtn.setText("Open File Dialog");
OpenFileBtn.move(20, 120);
OpenFileBtn.resize(160, 30);
SaveFileBtn.setText("Save File Dialog");
SaveFileBtn.move(20, 170);
SaveFileBtn.resize(160, 30);
resize(200, 220);
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);
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::Warning);//设置图标
msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel | QMessageBox::YesToAll| QMessageBox::NoToAll);//设置按钮,两个按钮 ok cancel
if( msg.exec() == QMessageBox::Ok )
{
qDebug() << "Ok button is clicked!";
}
}
void Widget::OpenFileBtn_Clicked()
{
QFileDialog dlg(this);//文本对话框
dlg.setAcceptMode(QFileDialog::AcceptSave);//打开模式
dlg.setFilter("Text(*.txt)");
//dlg.setFileMode(QFileDialog::ExistingFile);//打开文件一次只打开一个文件
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()
{
}
五、小结
Qt中提供了多个可复用的对话框类型
继承于QDialog可行
遵循相同的使用方式
QMessageBox用于提示重要的程序信息
QFileDialog用于获取文件系统中的文件路径
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。