2012-02-02 113 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