如何在Qt Designer中覆盖QComboBox的最小大小?

时间:2012-02-02 00:13:41

标签: qt qlayout

我有一个包含三列QGridLayout的对话框。其中一行分别包含QComboBox,QPushbutton和每列中的另一个QPushButton。我希望每列的大小和比例相同。

不幸的是,QComboBox将其大小提示设置得太大,足以容纳其最大的项目。它似乎没有SizeAdjustPolicy被称为“DoNotAdjustAndStopBeingAnnoying”或类似的,所以我不确定是否有任何我可以设置强制它停止进行此调整。

我知道我可以很容易地在代码中执行此操作,但我更愿意在.ui文件中保留这种细节。在没有编写任何代码的情况下,有什么办法可以在Qt 4.8中做到这一点吗?

2 个答案:

答案 0 :(得分:3)

我可以通过将组合框的sizePolicy的水平分量设置为Ignored来解决此问题。这导致组合框变得比按钮更加缩小,因此我将它们更改为使用Ignored并为所有3个控件设置水平minimumSize。现在它们都以相同的尺寸开始,并按照布局平均调整大小,停在适当的最小值。

答案 1 :(得分:1)

不要在ui文件中覆盖它。在构建直接访问ui的对象时,可以使用Qt Designer,属性面板或代码覆盖它。

编辑:无论如何它可能是有用的

QLayout::SizeConstraintQWidget::minimumSizeHintQWidget::minimumSize之间存在层次结构,您可以在文档中找到它。

    默认情况下未设置
  • QWidget::minimumSize。如果是的话,它就会胜过 QWidget::minimumSizeHint
  • 如果窗口小部件不在布局中,则
  • QWidget::minimumSizeHint无效(意味着可以使用鼠标将其调整为0),否则使用布局定义的窗口小部件。
  • QLayout::SizeConstraint保存*直接*管理的小部件的默认布局行为。如果在布局A中嵌套布局B,则添加到A的所有窗口小部件都将使用其属性。此外,如果W中的小部件B定义了自己的布局,则此布局约束是应用于小部件W的布局约束。