对话框类
#include <QDialog> //对话框类
模态对话框
阻塞式对话框。必须操作当前对话框后才可以进入后面的操作。
#include "mainwindow.h"
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QDialog> //对话框类
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QMenuBar *mBar = menuBar();
this->setMenuBar(mBar);
QMenu *menu = mBar->addMenu("Dialog");
QAction *p1 = menu->addAction("模态对话框");
connec(p1, &QAction::triggered,
[=]()
{
QDialog dlg;
dlg.exec();
qDebug()<<"模态对话框结束";
}
);
}
非模态对话框
#include "mainwindow.h"
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QDialog> //对话框类
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QMenuBar *mBar = menuBar();
this->setMenuBar(mBar);
QMenu *menu = mBar->addMenu("Dialog");
QAction *p_action = menu->addAction("非模态对话框");
connec(p_action, &QAction::triggered,
[=]()
{
//QDialog *p_dlg = new QDialog(this); //在堆区创建,但是如果反复创建,有可能导致内存泄漏
//p_dlg->show();
QDialog *p_dlg = new QDialog; //在堆区创建
p_dlg->setAttribute(Qt::WA_DeleteOnClose); //设置属性WA_DeleteOnClose
p_dlg->show();
}
);
}
MessageBox- 关于对话框
QMessageBox
属于模态对画框的一种,用户必须点击后才能消除掉。
#include "mainwindow.h"
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QDialog> //对话框类
#include <QDebug>
#include <QMessageBox> //Message Box
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QMenuBar *mBar = menuBar();
this->setMenuBar(mBar);
QMenu *menu = mBar->addMenu("Dialog");
QAction *p_action = menu->addAction("Message对话框");
connect(p_action , &QAction::triggered,
[=]()
{
QMessageBox::about(this, "about", "关于Qt");
}
);
}
MessageBox -问题对话框
#include "mainwindow.h"
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QDialog> //对话框类
#include <QDebug>
#include <QMessageBox> //Message Box
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QMenuBar *mBar = menuBar();
this->setMenuBar(mBar);
QMenu *menu = mBar->addMenu("Dialog");
QAction *p_action = menu->addAction("Message对话框");
connect(p_action , &QAction::triggered,
[=]()
{
int ret = QMessageBox::question(this,
"question", "Are you OK?",
QMessageBox::Ok | QMessageBox::Cancel);
switch(ret)
{
case QMessageBox::Ok:
qDebug()<<"I am Ok";
break;
case QMessageBox::Cancel:
qDebug()<<"I am bad";
break;
default:
break;
}
}
);
}