您的位置:首页 > 编程语言 > Qt开发

QT学习之路三(模态和非模态对话框)

2017-02-14 15:32 232 查看
  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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: