PyQt4:隐藏控件并调整窗口大小
我正在处理几个小部件,但解决方案就是想不出来。我有一系列按钮,这些按钮放在多个 QHBoxLayouts
中。有些按钮默认是隐藏的,但在需要的时候会显示出来。为了节省空间,所有按钮都有最小和最大尺寸,这样它们看起来总是很紧凑。另外,我还有一个默认可见的 QTextEdit
,它放在一个 QVBoxLayout
中,和包含按钮的 QHBoxLayout
一起。
问题是这样的:当我隐藏 QTextEdit
并显示其他按钮时,窗口不会自动调整大小。经过搜索,我发现使用 self.ui.layout().setSizeConstraint(QtGui.QLayout.SetFixedSize)
可以解决这个问题,但问题是它会把所有小部件的最大尺寸都考虑进去,这样我就会得到一个很大的窗口。使用 self.ui.layout().setSizeConstraint(QtGui.QLayout.SetMinAndMaxSize)
也无法调整窗口大小。
我已经尝试过使用 self.ui.resize(0,0)
,但在执行 self.ui.layout().update()
时得到了 False(我觉得这很奇怪,http://doc.trolltech.com/4.6/qlayout.html#activate),我还尝试重写 sizeHint()
,但它还是一直使用所有小部件的最大尺寸。
有没有办法在考虑小部件的最小和最大尺寸的情况下调整窗口大小呢?
提前谢谢你!
1 个回答
4
这个回答真是太简单了……只需要把 QVBoxLayout
换成 QGridLayout
,然后用 self.ui.layout().setSizeConstraint(QtGui.QLayout.SetFixedSize)
这行代码就可以了。