我试图创建一个由QMainWindow
组成的应用程序,它的中心小部件是QToolBar
(这可能不常见,但就我的目的而言,工具栏非常适合)。码头只允许在下面。我添加了一个QDockWidget
,而QToolBar
上的QAction
用removeDockWidget()
和restoreDockWidget()
来切换QDockWidget
的开关。在
QMainWindow
的默认大小是800x24,QToolBar
的maximumHeight
也设置为24。在调用removeDockWidget()
之后,QMainWindow
的几何体被设置回(0,0,800,24)
,其中setGeometry()
。在
我想实现的是在移除^{QMainWindow
的高度调整为24。由于宽度和位置相应地改变,setGeometry()
似乎可以工作,但有趣的是,高度没有变化。这就是我的问题:)
你怎么想的?在
Here is a screen-cast说明手头的问题。在
注意:如果我使用QWidget而不是QMainWindow来创建相同的场景,并且在子小部件上使用show()
或hide()
,那么我可以用adjustSize()
调整父窗口的大小,而不会有问题:上面的问题似乎是QMainWindow特有的。在
选项
a)可以重载sizeHint()一个虚拟函数。让它返回主窗口所需的大小。在
b)在主窗口的构造函数中,可以依次调用setMinimumSize()和setMaximumSize(),两者都具有所需的主窗口大小。如果你保持两个不变,你就得到了一个固定的尺寸。在
c)查看layout()->;setResizeMode(固定)。在
您似乎误解了
QMainWindow.sizeHint()
方法的含义。在根据^{} documentation (由
QMainWindow
继承):要获得窗口的实际大小,您应该使用
QMainWindow.geometry()
方法,该方法提供有关窗口小部件大小和位置的所有信息:相关问题 更多 >
编程相关推荐