2012-02-02 115 views
1

我有一个包含三列QGridLayout的对话框。其中一行分别包含QComboBox,QPushbutton和另一个QPushButton。我希望每一列的大小和规模相同。如何覆盖Qt Designer中QComboBox的最小大小?

不幸的是,QComboBox设置它的大小提示太大,要足够大以容纳其最宽的项目。看起来没有叫做“DoNotAdjustAndStopBeingAnnoying”或类似的SizeAdjustPolicy,所以我不确定是否有任何设置可以强制它停止调整。

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

回答

2

我能够通过将组合框的sizePolicy的水平分量设置为Ignored来解决此问题。这导致组合框变得比按钮更容易收缩,所以我改变它们也使用Ignored并为所有3个控件设置水平minimumSize。现在他们都是以相同的尺寸开始制作,并且在布局上同样大小,停在适当的最低限度。

1

不要在ui文件中覆盖它。当你直接访问UI时,用Qt设计器,属性面板或代码覆盖它。

编辑:反正它是有用的

QLayout::SizeConstraintQWidget::minimumSizeHintQWidget::minimumSize之间的层次,并且你可以在文档中找到它。

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

这听起来像你一般建议不要直接编辑.ui文件,这很好,但这是如何回答这个问题? – 2012-02-02 00:27:10

+0

你回答了你自己,所以我没有用0熵来添加信息。 – UmNyobe 2012-02-02 00:28:48

+0

不清楚熵是什么意思,但感谢您添加更多信息。我试着单独设置minimumSize,这种工作方式 - 它开始的尺寸合适,但比按钮缩放速度快,所以它只能看到最小尺寸。你知道它为什么这样做吗? – 2012-02-02 00:41:58