Bootstrap

Qt应用程序窗体无法最大化的解决方法

在Qt开发中我遇到一个很奇怪的问题:主窗体始终无法实现最大化——之前一直用的方法是setWindowState(Qt::WindowMaximized)。

定位过程如下:排除了Layout被重用,以及控件的缩放被限制的原因。通过删除法定位发现:在主窗体加入某一子窗体就会出现该问题。然后又发现在该子窗体的某一区域只要添加除QWidget外的任何控件,都会出现该问题。问题解决陷入僵局,不知该如何解决。后查阅Qt助手,发现还有showMaximized()这个函数可用。替换setWindowState,还是不行。后交换了showMaximized()和setWindowFlags(Qt::FramelessWindowHint)的调用顺序,该问题得以解决。其正确的调用顺序如下:

图1

将showMaximized()替换成setWindowState(Qt::WindowMaximized),问题会再次出现。鉴于此,在Qt开发中要实现窗体的最大化时,推荐使用showMaximized()。

另外,若想使用Qt窗体原生的Frame,则应按如图2所示方式编写代码。若不加最下边一句,则同样会出现窗体无法最大化的问题,如图3所示。

图2

 

 图3

 

;