我有一个包含三列QGridLayout的对话框。其中一行分别包含QComboBox,QPushbutton和每列中的另一个QPushButton。我希望每列的大小和比例相同。
不幸的是,QComboBox将其大小提示设置得太大,足以容纳其最大的项目。它似乎没有SizeAdjustPolicy被称为“DoNotAdjustAndStopBeingAnnoying”或类似的,所以我不确定是否有任何我可以设置强制它停止进行此调整。
我知道我可以很容易地在代码中执行此操作,但我更愿意在.ui文件中保留这种细节。在没有编写任何代码的情况下,有什么办法可以在Qt 4.8中做到这一点吗?
答案 0 :(得分:3)
我可以通过将组合框的sizePolicy
的水平分量设置为Ignored
来解决此问题。这导致组合框变得比按钮更加缩小,因此我将它们更改为使用Ignored
并为所有3个控件设置水平minimumSize
。现在它们都以相同的尺寸开始,并按照布局平均调整大小,停在适当的最小值。
答案 1 :(得分:1)
不要在ui文件中覆盖它。在构建直接访问ui的对象时,可以使用Qt Designer,属性面板或代码覆盖它。
编辑:无论如何它可能是有用的
QLayout::SizeConstraint,QWidget::minimumSizeHint,QWidget::minimumSize之间存在层次结构,您可以在文档中找到它。
QWidget::minimumSize
。如果是的话,它就会胜过
QWidget::minimumSizeHint
QWidget::minimumSizeHint
无效(意味着可以使用鼠标将其调整为0),否则使用布局定义的窗口小部件。QLayout::SizeConstraint
保存*直接*管理的小部件的默认布局行为。如果在布局A
中嵌套布局B
,则添加到A
的所有窗口小部件都将使用其属性。此外,如果W
中的小部件B
定义了自己的布局,则此布局约束是应用于小部件W
的布局约束。