Qt基础

您所在的位置:网站首页 什么是非模态对话框 Qt基础

Qt基础

2024-02-12 13:55| 来源: 网络整理| 查看: 265

Qt基础-模态与非模态窗口 模态与非模态的区别模态窗口的实现方法QDialog对话框QWidget和QMainWindow窗口 设置置顶非模态窗口 在Qt中,QDialog是所有对话框窗口类的基类,不只是对话框有模态与非模态区分,QWidget和QMainWindow窗口也可以设为模态,因此文章不称模态/非模态对话框,而叫做模态/非模态窗口。

模态与非模态的区别

模态(modal)窗口:窗口弹出后,没关闭之前,不可以对同一应用程序的其他窗口进行操作; 非模态(modeless)窗口:窗口弹出后,没关闭之前,可以对同一应用程序的其他窗口进行操作,可以同时和多个窗口进行交互;

模态窗口的实现方法

窗口的show()函数显示的类型是非模态的,有几种方法可以将窗口设为模态,如下:

QDialog对话框 方法1:exec() QDialog dlg(this); dlg.exec();

– 说明:exec是execute(执行)的缩写,当调用exec()函数时,并不会立即返回,只用当对话框关闭才会返回,因此,只有关闭对话框才会执行后续的代码。

方法2:setModal() QDialog dlg(this); dlg.setModal(true); //相当于dlg.setWindowModality(Qt::ApplicationModal); dlg.show(); 说明:设置完模态之后,会执行后续的代码,并不会阻塞。 方法3:setWindowModality() QDialog dlg(this); dlg.setWindowModality(Qt::ApplicationModal); dlg.show(); 说明:setWindowModality()的参数设置要阻塞的窗口类型: 枚举值值说明Qt::NonModal0非模态,不阻塞任何窗口Qt::WindowModal1模态,阻塞它的父窗口、所有的祖先窗口以及他们的子窗口Qt::NonModal2模态,阻塞应用程序所有的窗口 QWidget和QMainWindow窗口

这两种窗口的模态实现只有上述QDialog中的方法3,即setWindowModality(),不再赘述。

设置置顶非模态窗口

有子窗口和父窗口,要实现子窗口置顶,但是可以对父窗口进行操作,可以在父窗口中进行设置:

subDlg->setParent(this,Qt::Window);


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3