Qt中QDialog类是所有对话框的基类,对话框窗口是一个经常用来完成一个短小任务和用户进行简单交互的顶层窗口。对话框被分为两类模态的和非模态的。
模态对话框就是没有关闭它之前,不能再与同一个应用程序的其他窗口进行交互,比如新建项目是弹出的对话框。而对于非模态对话框,既可以和它进行交互,也可以与同一程序中的其他窗口交互。
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
namespace Ui {
class MyWidget;
}
class MyWidget : public QWidget
{
Q_OBJECT
public:
explicit MyWidget(QWidget *parent = 0);
~MyWidget();
private:
Ui::MyWidget *ui;
};
#endif // MYWIDGET_H
#include "mywidget.h"
//#include "ui_mywidget.h"
#include <QDialog>
MyWidget::MyWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyWidget)
{
ui->setupUi(this);
QDialog *dialog = new QDialog(this);
//dialog->setModal(true);
//dialog->show(); //模态 但是执行完后控制权限交给调用者
dialog->exec(); //模态对话框 必须关闭才能开启下一个窗口
//dialog->setWindowModality(Qt::NonModal); //Qt::NonModal 不阻塞任何窗口 非模态
//dialog->setWindowModality(Qt::WindowModal); //Qt::WindowModal 阻塞其父窗口和所有祖先窗口以及他们的子窗口
//dialog->setWindowModality(Qt::ApplicationModal);//Qt::ApplicationModal阻塞整个应用程序的所有窗口
//dialog->setModal(); //默认设置的是Qt::ApplicationModal
}
MyWidget::~MyWidget()
{
delete ui;
}
#include <QtGui/QApplication>
#include "mywidget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWidget w;
w.show();
return a.exec();
}