Qt学习之路10--Qt标准对话框(消息提示对话框和文件对话框)

虽然我们可以使用QDialog类进行自定义对话框的开发,但是Qt为了方便开发,提供了几种可复用的对话框类型,它们都继承自QDialog类。
Qt学习之路10--Qt标准对话框(消息提示对话框和文件对话框)_第1张图片
分别是消息对话框、打开文件对话框、打印对话框、颜色选择对话框、输入对话框和进度条对话框,由于篇幅,将分次学习标准对话框,本次学习消息提示对话框和文件选择对话框。
因为Qt中所有类型的对话框都继承自QDialog类,那么所有的对话框都遵循三板斧:定义对象并设置好父窗口及对话框属性、模态调用exec函数(等待用户处理并防止一闪而过)、根据返回值进行下一步数据处理。
Qt学习之路10--Qt标准对话框(消息提示对话框和文件对话框)_第2张图片

消息对话框

消息对话框是应用程序中常用的界面元素,常用于给用户提供消息提示和强制用户进行某些操作。
根据之前三板斧原则接下来就可以直观的试试消息对话框怎么使用。

QMessageBox msg(this);//对话框设置父组件
msg.setWindowTitle("Window Title");//对话框标题
msg.setText("This is a message dialog!");//对话框提示文本
msg.setIcon(QMessageBox::Information);//设置图标类型
msg.setStandardButtons(QMessageBox::Ok | QMessageBox:: Cancel | QMessageBox::YesToAll);//对话框上包含的按钮

if(msg.exec() == QMessageBox::Ok)//模态调用
{
   qDebug() << " Ok is clicked!";//数据处理
}

Qt学习之路10--Qt标准对话框(消息提示对话框和文件对话框)_第3张图片
当按下OK按钮后就会在输出框打印”Ok is clicked!”
除了三板斧的方式使用消息提示对话框以外还可以使用QMessageBox提供的几个静态成员函数得到相同的结果。

QMessageBox::question(this,"question","This is a question Dialog!",QMessageBox::Ok | QMessageBox::Cancel,QMessageBox::Cancel);
QMessageBox::information(this,"information","This is a information Dialog!",QMessageBox::Ok | QMessageBox::Cancel,QMessageBox::Cancel);
QMessageBox::warning(this,"warning","This is a warning Dialog!",QMessageBox::Ok | QMessageBox::Cancel,QMessageBox::Cancel);
QMessageBox::critical(this,"critical","This is a critical Dialog!",QMessageBox::Ok | QMessageBox::Cancel,QMessageBox::Cancel);
QMessageBox::about(this,"about","This is a about Dialog!");

五个类型分别表示提问型、提示型、警告型、错误型和相关型。

除了about只有三个参数和返回void,其他每个函数都有五个参数并带有一个返回标准按钮StandardButton类型的返回值

  • QWidget * parent父组件
  • const QString & title:对话框标题
  • const QString & text:显示内容
  • StandardButtons buttons = Ok:对话框带有的按钮,默认是“Ok”,按钮有很多类型,通过在Qt帮助文档中查询到的结果
    Qt学习之路10--Qt标准对话框(消息提示对话框和文件对话框)_第4张图片
    在实际使用中可以根据不同用途选择使用不同的标准按钮,如使用多个按钮使用按位或。
  • StandardButton defaultButton = NoButton:按下回车键后默认执行的按钮效果,按钮类型也是在标准范围内,默认不做任何按钮选择。
  • 返回类型StandardButton:在使用过程中通过接受返回类型的按钮值进行下一步数据处理,和使用三板斧中的根据消息循环的结果判断流程走向一致。
  • 有一点注意,对不同类型的消息对话框函数而言默认的图标也是不同的。

文件对话框

文件对话框常用于打开文件和保存文件
Qt学习之路10--Qt标准对话框(消息提示对话框和文件对话框)_第5张图片
使用文件对话框依旧是三板斧原则:定义对话框对象后设置父组件及对话框属性、模态调用exec()、根据返回结果执行后面的流程。
常规的使用文件对话框的方式如下:

QFileDialog dlg(this);
dlg.setDirectory("G:/D.T.Qt/Notes");//设置默认目录
dlg.setAcceptMode(QFileDialog::AcceptOpen);//允许打开文件
dlg.setFileMode(QFileDialog::ExistingFile );//选择单个文件
dlg.setFilter("Image(*.jpg *.xmp *.bmp);;Text(*.txt)");

if(dlg.exec() == QFileDialog::Accepted)
{
   QStringList fs = dlg.selectedFiles();

   for(int i = 0; i < fs.count(); i++)
   {
       qDebug() << fs[i];
   }
}
  • 在setAcceptMode中带有一个参数,参数值定义在一个枚举中: enum AcceptMode { AcceptOpen, AcceptSave };分别表示打开文件和保存文件
  • 在setFileMode中也带有一个可选枚举参数,定义在enum FileMode { AnyFile, ExistingFile, Directory, ExistingFiles, DirectoryOnly };
    • QFileDialog::AnyFile:表示一个文件名,不管文件是否存在
    • QFileDialog::ExistingFile:表示单个存在的文件名
    • QFileDialog::Directory:表示一个目录名,不管是文件还是目录都会在对话框中被显示出来
    • QFileDialog::DirectoryOnly:表示0个或多个已存在的文件名
  • setFilter是用来设置文件类型过滤器。
    Qt学习之路10--Qt标准对话框(消息提示对话框和文件对话框)_第6张图片
    如果需要使用多条过滤规则使用“Image(.jpg .xmp .bmp);;Text(.txt)”格式,在两种过滤条件之间使用两个分号。
    Qt学习之路10--Qt标准对话框(消息提示对话框和文件对话框)_第7张图片
    可以看到我们之前设置的属性是生效了的,包括默认目录、打开文件、文件类型过滤。
    和消息框一样,文件对话框也带有几个静态的成员函数能够实现常规的功能。
String  getExistingDirectory ( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), Options options = ShowDirsOnly )
QString getOpenFileName ( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0 )
QStringList getOpenFileNames ( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0 )
QString getSaveFileName ( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0 )

例如:

QFileDialog::getOpenFileName(this,"GetFileName Dialog","G:/D.T.Qt/Notes","Text(*.txt)" );

Qt学习之路10--Qt标准对话框(消息提示对话框和文件对话框)_第8张图片
所以,文件对话框的作用就是获取选择的文件对应的文件路径。

你可能感兴趣的:(Qt)