当我使用网格布局的QMainWindow并用鼠标调整大小时,它不会缩小到一定的最小尺寸,以使其中的所有控件都能正确显示。在我的应用程序中,有时我会编程隐藏控件,但是窗口的大小仍然保持不变,其他控件看起来分散开,它们之间的空间太大了。最终我手动调整对话框的大小,以避免它看起来很丑。
在我隐藏控件后,我可以通过编程方式将对话框的垂直大小设置为手动调整大小时获得的这个最小值吗?
在我隐藏控件后,我可以通过编程方式将对话框的垂直大小设置为手动调整大小时获得的这个最小值吗?
QMainWindow
中的centralWidget
大小,然后再调整QMainWindow
本身的大小就可以解决问题。换句话说:from PyQt4 import QtGui
class MyMainWindow(QtGui.QMainWindow):
def __init__(self):
# define some widgets and stuff
def whenWidgetsAreHidden(self):
# this method should be triggered when you hide your widgets
self.centralWidget.adjustSize()
self.adjustSize()
在编程中,QLayout::SizeConstraint、QWidget::minimumSizeHint和QWidget::minimumSize之间存在层次关系,您可以在文档中找到相关信息。
QWidget::minimumSize
默认情况下未设置。当设置时,它优先于QWidget::minimumSizeHint
QWidget::minimumSizeHint
无效,否则请使用布局定义的大小。QLayout::SizeConstraint
保存它直接管理的小部件的默认布局行为。如果您在布局B
中嵌套布局A
,则添加到A
的所有小部件都将使用其属性。此外,如果B
中的小部件W
定义了自己的布局,则应用这些布局约束来应用于小部件W
。了解这一点后,请按照以下步骤操作。它可能有效,我没有尝试过:)
QLayout::SetDefaultConstraint
。 QWidget widget;
widget.resize(widget.width(), widget.minimumHeight());
widget.resize(widget.width(), 1)
有何不同?0 和 1 之间有什么区别吗?(我是一个新手,显然可以看出来。) - Joseph Quinsey