1

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

不幸的是,QComboBox 将其尺寸提示设置得太大,以至于无法容纳其最宽的项目。似乎没有名为“DoNotAdjustAndStopBeingAnnoying”或类似名称的SizeAdjustPolicy,所以我不确定是否可以设置任何东西来强制它停止执行此调整。

我知道我可以很容易地在代码中做到这一点,但我更愿意将这种细节保留在 .ui 文件中。有什么方法可以在 Qt 4.8 中做到这一点而无需编写任何代码?

4

2 回答 2

3

我能够通过将sizePolicy组合框的水平分量设置为Ignored. 这导致组合框可以比按钮进一步缩小,因此我将它们更改为也使用Ignored并设置minimumSize所有 3 个控件的水平。现在它们都以相同的大小开始,并且随着布局的大小相等,在适当的最小值处停止。

于 2012-02-02T00:21:42.920 回答
1

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

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

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

  • QWidget::minimumSize默认情况下未设置。当它存在时,它占了上风 QWidget::minimumSizeHint
  • QWidget::minimumSizeHint如果小部件不在布局中,则无效(意味着可以用鼠标将其大小调整为 0),否则使用布局定义的那个。
  • QLayout::SizeConstraint保存它*直接*管理的小部件的默认布局行为。如果您在 layout 中嵌套A布局B,则添加到的所有小部件都A将使用其属性。此外,如果小部件定义WB自己的布局,则此布局约束将应用于小部件W
于 2012-02-02T00:22:35.917 回答