模态对话框与非模态窗口

模态对话框就是在没有关闭它之前,不能再与同一个应用程序的其他窗口进行交互,比如新建项目时弹出的对话框。

#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    QDialog dialog;
    dialog.setWindowTitle("模态对话框");
    dialog.exec();
}在.cpp文件中建立个对象,之后加以.exec();进入消息循坏。这就是模态对话框了。其实使用show()函数也可以建立模态对话框,只须在其前面使用setModal()函数即可。
    QDialog *dialog2 = new QDialog();
    dialog2.setModal(true);
    dialog2.show();
这样主窗口也是会展现出来了。与setM欧大力()函数相似的还有一个setWindowModality()函数,它有一个参数来设置模态对话框要阻塞的窗口类型,可以是
Qt::NonModal(不阻塞任何窗口,就是非模态)、Qt::WindowModal(阻塞它的父窗口、所有祖先窗口以及他们的子窗口)或Qt::ApplicationModal(阻塞整个应用程序的所有).而setModal()函数默认设置的是Qt::ApplicationModal。非模态窗口就是即可以交互,也可以与同一程序中的其他窗口交互。默认的就是非模态。
dialog2->setModal(false);


原文地址:https://www.cnblogs.com/qq376142178/p/12400705.html

时间: 2024-09-29 18:27:40

模态对话框与非模态窗口的相关文章

QT笔记之模态对话框及非模态对话框

模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是Qt所独有的,在各种不同的平台下都存在.又有叫法是称为模式对话框,无模式对话框等.所谓模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭.对于非模态对话框,当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互. 在Qt中,显示一个对话框一般有两种方式,一种是使用exec()方法,它总是以模态来显示对话框:另一种是使用show()方法

MFC中模态对话框和非模态对话框

MFC的对话框非为两种,一种叫模态对话框(Modal  Dialog  Box,又叫做模式对话框),一种叫做非模式对话框(Modaless Dialog Box,又叫无模式对话框).两者的区别在于当对话框打开的时候,是否允许用户进行其他对象的操作. 一.模态对话框 模态对话框指,当用户需要对该对话框之外的其他对话框或者模块进行操作时,必须该对话框关闭,才能去编辑其他对话框或者模块. 创建如下: //创建模态对话框 CModalDialog modalDialog; modalDialog.DoM

模态对话框与非模态对话框

①.区别 模态对话框:创建后,程序的其他窗口便不能进行操作,必须将该窗口关闭后,其他窗口才能进行操作.------父线程阻塞,子线程运行 非模态对话框:无需像模态对话框那样,它不强制要求用户立即反应,而是与其他窗口同时接受用户操作.-----父子线程同时运行 ②.添加资源与类绑定 资源窗口添加Dlg资源,Dlg窗口右键Add Class 绑定类.选择继承类 CDialog. ②.对话框创建与显示 模态对话框:CDialog::DoModal CMyDialog dlg;//继承CDialog类的

VC++模态对话框和非模态对话框

MFC中有两种类型的对话框:模态对话框和非模态对话框. 模态对话框是指当其显示时,程序会暂停执行,直到关闭这个模态对话框后,才能继续执行程序中其他任务.非模态对话框是指当其显示时,允许转而执行程序中其他任务,而不用关闭这个对话框. 模态对话框的创建:创建模态对话框需要调用CDialog类的成员函数:DoModal,该函数的功能是创建并显示一个模态对话框,其返回值将作为CDialog类的另一个成员函数:EndDialog的参数,后者的功能是关闭模态对话框.一般显示模态对话框的实现代码如下: voi

骆驼命名法和模态对话框与非模态的对话框

骆驼式命名法(Camel-Case)又称驼峰命名法,是电脑程式编写时的一套命名规则(惯例).正如它的名称CamelCase所表示的那样,是指混合使用大小写字母来构成变量和函数的名字.程序员们为了自己的代码能更容易的在同行之间交流,所以多采取统一的可读性比较好的命名方式. 有些程序员喜欢全部小写,有些程序员喜欢用下划线,所以如果要写一个my name的变量,他们常用的写法会有myname.my_name.MyName或者myName.这样的命名规则不适合所有程序员阅读,而利用驼峰命名法来表示,可以

QT模态对话框及非模态对话框

QT模态对话框及非模态对话框 模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是Qt所独有的,在各种不同的平台下都存在.又有叫法是称为模式对话框,无模式对话框等.所谓模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭.对于非模态对话框,当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互. 在Qt中,显示一个对话框一般有两种方式,一种是使用exec()方法,它总是以模态来显示对话框

MFC中模态对话框和非模态对话框的区别

在MFC中有模态对话框和非模态对话框,那这两种有什么区别呢.又都是用于什么场合呢. 首先,要弄清楚2种对话框是如何创建的. 然后要弄清楚2种对话框有什么区别,可能从表面上看,模态会阻塞主对话框,可原理是什么呢. 还有就是,当有模态和非模态对话框没有关闭的时候,在任务栏中,关闭主窗体,会有什么样的效果呢. 虽然,现在有很多优秀的开源库比如QT,DUI等,但是这些原理,我们还是要了解的,不能停留在用的层面.有人说MFC过时了,有人说,现在有很多开源库,知道怎么用就可以了.但是现在界面要的交互好,界面

MFC 模态对话框与非模态对话框

1 1 模态对话框与非模态对话框 2 //1 3 CChatDlg *pChatDlg = new CChatDlg; //pChatDlg会被释放 4 if (FALSE == pChatDlg->Create(IDD_CHAT_DLG, this)) 5 { 6 return; 7 } 8 pChatDlg->ShowWindow(SW_SHOW); //不show看不到的 9 10 //2 再次点击不能用了 11 12 CChatDlg pChatDlg; //.h 13 if (FAL

【转】MFC模态对话框和非模态对话框

MFC中对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box). 一.模态对话框(model dialog box) 在程序运行的过程中,若出现了模态对话框,那么主窗口将无法发送消息,直到模态对话框退出才可以发送. 点击模态对话框中的OK按钮,模态对话框会被销毁. 创建一个模态对话框的代码: 1 //创建一个模态对话框 2 CTestDialog td; 3 td.DoModal(); 其中CTestDialog为我自