模态和非模态对话框、关于对话框、问题对话框和文件对话框

先演示一下:


模态对话框就是父对话框产生子对话框以后不能托动的,非模态框相反

效果:



问题对话框:

QAction *p4=menu->addAction("问题对话框");
    connect(p4,&QAction::triggered,
           [=]()
           {
               int ret=QMessageBox::question(this,"Question","Are you ok?");
               switch (ret) {
               case QMessageBox::Yes:
                   qDebug()<<"I am ok";
                   break;
               case QMessageBox::No:
                   qDebug()<<"I am bad";
               default:
                   break;
               }
           }
           );

这里因为question是有返回值的,并且根据文档:


选择了两个

效果:



文件对话框:

QAction *p5=menu->addAction("文件对话框");
    connect(p5,&QAction::triggered,
           [=]()
           {
              QString path=QFileDialog::getOpenFileName(
                          this,
                          "open",
                          "../",
                          //下面是可以筛选出来的文件类型,注意格式
                          "souce(*.cpp *.h);;"
                          "Text(*.txt);;"
                          "all(*.*)"
                          );
              qDebug()<<path;
           }
           );

效果:


下面是总的代码:

注意所需要的头文件:

#include "mainwindow.h"
#include<QMenu>
#include<QMenuBar>
#include<QAction>
#include<QDialog>
#include<QDebug>
#include<QMessageBox>
#include<QFileDialog>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(400,300);
    QMenuBar *mBar=menuBar();
    setMenuBar(mBar);
    QMenu *menu=mBar->addMenu("对话框");
    QAction *p1=menu->addAction("模态对话框");
    connect(p1,&QAction::triggered,
           [=]()
           {
               QDialog dlg;
               dlg.exec();
               qDebug()<<"1111";
           }
           );
    QAction *p2=menu->addAction("非模态对话框");
    connect(p2,&QAction::triggered,
           [=]()
           {
               QDialog *dlg2=new QDialog;
               dlg2->setAttribute(Qt::WA_DeleteOnClose);
               dlg2->show();
           }
           );
    QAction *p3=menu->addAction("关于对话框");
    connect(p3,&QAction::triggered,
           [=]()
           {
               QMessageBox::about(this,"about","我爱QT");
           }
           );
    QAction *p4=menu->addAction("问题对话框");
    connect(p4,&QAction::triggered,
           [=]()
           {
               int ret=QMessageBox::question(this,"Question","Are you ok?");
               switch (ret) {
               case QMessageBox::Yes:
                   qDebug()<<"I am ok";
                   break;
               case QMessageBox::No:
                   qDebug()<<"I am bad";
               default:
                   break;
               }
           }
           );
    QAction *p5=menu->addAction("文件对话框");
    connect(p5,&QAction::triggered,
           [=]()
           {
              QString path=QFileDialog::getOpenFileName(
                          this,
                          "open",
                          "../",
                          "souce(*.cpp *.h);;"
                          "Text(*.txt);;"
                          "all(*.*)"
                          );
              qDebug()<<path;
           }
           );
}

MainWindow::~MainWindow()
{

}


猜你喜欢

转载自blog.csdn.net/scwmason/article/details/81056366