19_Qt中的标准对话框

关键词:QMessageBoxQFileDialog

1. 标准对话框

  • Qt为开发者提供了一些可复用的对话框类型
  • Qt提供的可复用对话框全部继承自QDialog
    19_Qt中的标准对话框_第1张图片
    对话框类型
  • Qt中标准对话框遵循相同的使用方式
    19_Qt中的标准对话框_第2张图片

2. 消息对话框

  • 消息对话框的主要作用
    1) 为用户提示重要信息
    2)强制用户进行操作选择

  • 消息对话框的使用方式

    QMessageBox msg(this);  // 构造消息对话框对象

    msg.setWindowTitle("Message Title");        // 设置相关属性
    msg.setText("This is message dialog!");
    msg.setIcon(QMessageBox::Information);
    msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);

    if( msg.exec() == QMessageBox::Ok)
    {
        qDebug() << "Ok button is clicked!";
    }
  • QMessageBox中的实用函数
    19_Qt中的标准对话框_第3张图片
    // the use of information:
    QMessageBox msg(this);

    int standBtn =  msg.information(this,
                    "Message title",
                    "this is content!",
                    QMessageBox::Ok | QMessageBox::Cancel);

    if( standBtn == QMessageBox::Ok )
    {
        qDebug() << "information ok";
    }
    else if ( standBtn == QMessageBox::Cancel )
    {
        qDebug() << "information cancal";
    }

    // the use of question:
    QMessageBox msg(this);

    int ret = msg.question(this,
                           "Message title-->question",
                           "the use of question",
                           QMessageBox::Ok | QMessageBox::Cancel,
                           QMessageBox::Ok);

    if( ret == QMessageBox::Ok )
    {
        qDebug() << "question::Ok";
    }
    else if( ret == QMessageBox::Cancel )
    {
        qDebug() << "question::Cancel";
    }
    else
    {
        qDebug() << "Error";
    }

    // the use of waring:
    QMessageBox msg(this);

    int ret = msg.warning(this,
                          "Message title-->waring",
                          "the use of waring",
                          QMessageBox::Ok | QMessageBox::Cancel,
                          QMessageBox::Ok);

    if( ret == QMessageBox::Ok )
    {
        qDebug() << "waring::Ok";
    }
    else if( ret == QMessageBox::Cancel )
    {
        qDebug() << "waring::Cancel";
    }
    else
    {
        qDebug() << "Error";
    }

    // the use of critical:
    QMessageBox msg(this);

    int ret = msg.critical(this,
                          "Message title-->critical",
                          "the use of critical",
                          QMessageBox::Ok | QMessageBox::Cancel,
                          QMessageBox::Ok);

    if( ret == QMessageBox::Ok )
    {
        qDebug() << "critical::Ok";
    }
    else if( ret == QMessageBox::Cancel )
    {
        qDebug() << "critical::Cancel";
    }
    else
    {
        qDebug() << "Error";
    }

    // the use of about:
    QMessageBox msg(this);

    msg.about(this,"Message title-->about","the use of about");

3. 文件对话框

  • 文件对话框常用情形
    1) Open Mode:应用程序中需要用户打开一个外部的文件
    2) Save Mode:应用程序中需要将当前内容存储于用户指定的外部文件中

  • 文件对话框的使用方式

    19_Qt中的标准对话框_第4张图片

  • 文件类型过滤器
    1)在文件对话框中可以通过文件后缀定义过滤器
    2)过滤器定义规则:
    显示名(*.后缀1 *.后缀2 ... *.后缀N)
    如:
    "Image(*.png *.jpg *.xpm)"
    fd.setFilter(".h(*.h)");

// 文件打开对话框
void Dialog::OpenFileBtn_Clicked()
{
    QFileDialog dlg(this);

    dlg.setAcceptMode(QFileDialog::AcceptOpen);
    dlg.setFilter("cpp(*.cpp)");                   // 添加文件过滤器
    dlg.setFileMode(QFileDialog::ExistingFile);     // 选择单个文件, 如果需要选择多个文件则为:ExistingFiles

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

        for(int i=0; i
// 文件存储对话框
void Dialog::SaveFileBtn_Clicked()
{
    QFileDialog dlg(this);

    dlg.setAcceptMode(QFileDialog::AcceptSave);

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

        for(int i=0; i
  • QFileDialog中的实用函数

4. 小结

  • Qt中提供了多个可复用的对话框类型
    1) 继承于QDialog
    2) 遵循相同的使用方式
  • QMessageBox用于提示重要的程序信息
  • QFileDialog用于获取系统中的文件路径

声明:此文章仅是本人在学习狄泰QT实验分析课程所做的笔记,文章中包含狄泰软件资料内容,一切版权归狄泰软件所有!
实验环境:ubuntu10 + Qt Creator2.4.1 + Qt SDK 4.7.4