先演示一下:
模态对话框就是父对话框产生子对话框以后不能托动的,非模态框相反
效果:
问题对话框:
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()
{
}