夜凉如水

Qt中界面对象的show和exec

夜凉如水 编程Qt

2017-07-17 周一 天气忘了… 北京 院里

Qt中界面对象的show和exec

这次说一下学习到的与Qt中dialog界面对象show和exec相关的知识。

1.函数中临时建立界面对象

希望在函数中建立临时界面对象,通过show()函数让界面显示。这时候要注意,要用new新建指针类型变量,“show”的界面才会显示出来;如果直接声明对象变量,那么在函数执行完毕后,作为临时变量的界面对象会自动删除,因此呈现给我们的就是界面会闪一下然后消失。

如果希望界面函数通过exec()函数执行,则不会有上面的问题,因为程序会等待新的界面对象执行完毕之后,才继续执行函数后面的语句。

2.如何让show的界面对象保持在最上层

我们知道,通过exec()函数执行的界面会保持在最上层,只有该界面关闭时,才能操作其他界面。这种界面叫做模态(模式、modal)对话框。

而通过show()函数显示的界面则是非模态的对话框。其实,通过setModal(bool)函数即可设置界面显示为模态或者非模态。当设置ture时即为模态,就与exec()执行出来的效果一样了

3.如何让exec执行出的界面为非模态

exec()函数是有返回值的,如果我们需要返回值,而又需要非模态的界面,那怎么办?

经过我的实际测试,在执行exec()前,先执行一下show()函数,那么出来的界面就是非模态的了。不过这只是我的野路子,不知道会不会有问题。

夜凉如水
人丑就要多读书