7、常见的对话框

1、模态对话框,该对话框弹出后 不可以再操作对话框外面的选项

#include <QDialog>     // 包含的头文件

QMenuBar *mBar = menuBar(); 
setMenuBar(mBar);   // 设置菜单栏
QMenu *menu = mBar->addMenu("对话框");  // 菜单栏添加一个选项
QAction *p1 = menu->addAction("模态对话框");  // 对话框按钮添加第一个可选择的动作
connect(p1,&QAction::triggered,  // 处理p1的动作
            [=]()
            {
                QDialog log;   // 模态对话框
                log.exec();  // 窗口等待消息 程序停在这里
            }
            );

2、非模态对话框,该对话框出现后,可以操作其他窗口的选项

// 基于上一步创建的选项,添加选项
QAction *p2 = menu->addAction("非模态对话框");//对话框按钮添加第二个可选择的动作
connect(p2,&QAction::triggered,
            [=]()
            {
              // 非模态对话框
              //  dlg.show(); // 将dlg定义在头文件中,类释放时释放内存
               QDialog *d = new QDialog(this);
               d->setAttribute(Qt::WA_DeleteOnClose);  // 关闭窗口时释放内存
               d->show();
            }
            );

3、标准对话框

  1、abort()对话框

#include <QMessageBox>    // 包含头文件  // 基于上节内容继续添加

QAction *p3 = menu->addAction("关于对话框");
    connect(p3,&QAction::triggered,
            [=]()
            {
              QMessageBox::about(this,"abort","关于QT对话框");
            }
            );

 

   2、询问(问题对话框)

 QAction *p4 = menu->addAction("问题对话框");
    connect(p4,&QAction::triggered,
            [=]()
            {
                // 默认的标准对话框
              int ret = QMessageBox::question(this,"question Dialog","是否需要关闭对话框");
              switch(ret)
              {
                case QMessageBox::Yes:
                  qDebug()<< "Yes 关闭";
                  break;
              case QMessageBox::No:
                  qDebug()<< "No 不关闭";
                  break;
              default:
                  break;
              }
              // 自定义对话框格式
              QMessageBox::question(this,"Question Dialog","是否正常退出",
                                    QMessageBox::Cancel| QMessageBox::Ok );
                }
            );

标准对话框自定义对话框

 

3、文件对话框(获取文件路径)

QAction *p5 = menu->addAction("文件对话框");
    connect(p5,&QAction::triggered,
            [=]()
            {
                // 获取文件路径
              QString path = QFileDialog::getOpenFileName(this,
                                           "open",
                                           "../",
                                           "source(*.cpp *.h);;Text(*.txt);;all(*.*)"
                                           );
              qDebug()<< path;  // 打印文件路径
            }
            );

 

posted @ 2020-07-30 18:09  笑不出花的旦旦  阅读(153)  评论(0)    收藏  举报