QT 全屏显示子窗口

来源:互联网 发布:天下谁人不通共 知乎 编辑:程序博客网 时间:2024/04/27 22:53

我的文章所写内容,都是自己实际编程中遇到的,通常是在遇到这个问题时,在网上搜索或者自己找到解决办法。

有时候,某些问题要花好久才找的到解决方案,因为网上资料较少,也有可能是我搜索能力不强。

写下这些,一是希望能帮助到遇到同样问题的朋友,二是记下之后,再次遇到这些问题,能记得解决办法。

由于平时工作都很忙,所以我的文章大多都只简单的写了方法,没讲解得太详细。

还是希望能够帮助到有需要的朋友们。

QT中全屏显示子窗口的方法:

QT中窗口部件QWidget成员函数showFullScreen();是用于将窗口部件全屏显示,但是他只对窗口模式的部件有用。子窗口的特征是Qt::SubWindow,不是独立的窗口。因此对其调用showFullScreen()无效。通过对对子窗口调用:setWindowFlags(Qt::Dialog);或setWindowFlags(Qt::Window);将其设为窗口模式后,即可调用showFullScreen();进行全屏显示了。

 

相对于子窗口的全屏显示方法,不得不提的是子窗口退出全屏的方法。

MFC中,子窗口退出全屏的方法简单直接,直接调用SetWindowPos()函数将子窗口显示到预定的位置即可。

QT中,直接使用move和resize对窗口定位是没有效果的。需要先将子窗口设位非窗口模式。之后再将窗口移到理想位置。

 

即先调用setWindowFlags(Qt::Dialog);或者setWindowFlags(Qt::SubWindow);在调用move和resize函数。

 

有人提到退出全屏时,调用showNormal(),再调setWindowFlags(Qt::SubWindow)。

这有两个问题:1)showNormal()也是只对顶级窗口有效。2)可以考虑先调用showNormal()将窗口设为原来大小,在将窗口设为子窗口模式。但这样窗口回到父窗口之中也不会显示原来的大小。

原创粉丝点击