Qt模态对话框/非模态对话框/半模态对话框「终于解决」

Qt模态对话框/非模态对话框/半模态对话框「终于解决」模态对话框阻塞同一应用程序中其它可视窗口输入的对话框;显示模态对话框最常见的方法是调用其exec()函数:#pragmaexecution_character_set(“utf-8”)MainWindow*pMainWindow=newMainWindow();pMainWindow->setWindowTitle(“主界面”);pMainWindow->show();CustomWindow*pDialog=newCustomWindow(pMainWindo

大家好,欢迎来到IT知识分享网。

模态对话框

阻塞同一应用程序中其它可视窗口输入的对话框;
显示模态对话框最常见的方法是调用其exec()函数:

#pragma execution_character_set("utf-8")
MainWindow *pMainWindow = new MainWindow();
pMainWindow->setWindowTitle("主界面");
pMainWindow->show();

CustomWindow *pDialog = new CustomWindow(pMainWindow);
pDialog->setWindowTitle("模式对话框");

// 关键代码,以模态方法显示对话框
pDialog->exec();

// 关闭模态对话框以后才会执行下面的代码
pMainWindow->setWindowTitle("主界面-模式对话框");
qDebug() << "关闭模态对话框以后,可以继续向下执行";

IT知识分享网

主界面被阻塞,不能进行点击、拖动等任何操作;
exec()之后的代码不会执行,直到关闭模态对话框。

非模态对话框

和同一个程序中其它窗口操作无关的对话框;
调用show()来显示非模式对话框,并立即将控制返回给调用者:

IT知识分享网#pragma execution_character_set("utf-8")
MainWindow *pMainWindow = new MainWindow();
pMainWindow->setWindowTitle("主界面");
pMainWindow->show();

CustomWindow *pDialog = new CustomWindow(pMainWindow);
pDialog->setWindowTitle("非模式对话框");

// 关键代码,以非模态的方式显示对话框
pDialog->show();

// 下面的代码会立即运行
pMainWindow->setWindowTitle("主界面-非模式对话框");
qDebug() << "立即运行";

主界面不会被阻塞,可以进行点击、拖动等任何操作;
show()之后的代码会立即执行

半模态对话框(非模态方式,界面阻塞,代码执行)

调用setModal(true)或者setWindowModality(),然后show();

#pragma execution_character_set("utf-8")
MainWindow *pMainWindow = new MainWindow();
pMainWindow->setWindowTitle("主界面");
pMainWindow->show();

CustomWindow *pDialog = new CustomWindow(pMainWindow);
pDialog->setWindowTitle("半模式对话框");

// 关键代码
pDialog->setModal(true);
pDialog->show();

// 下面的代码会立即运行
pMainWindow->setWindowTitle("主界面-半模式对话框");
qDebug() << "立即运行";

主界面被阻塞,不能进行点击、拖动等任何操作;
show()之后的代码会立即执行。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/10912.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信