2011-04-05 60 views
3

我試圖使QGroupBox具有它的內容大小以適應內容。 我想我不明白這是如何工作,我得到了這種奇怪的情況: 我有2個按鈕在水平佈局,我把它放在QGroupBox裏面。點擊一個按鈕時,我添加了一個插槽來打印調試信息(所以當調試代碼運行時,窗口是完全加載的)。羣組中的Qt4佈局

問題是QGroupBoxsizeHint返回(-1,-1),但QGroupBox內的水平佈局有正確的sizeHint。 任何想法爲什麼QGroupBox中的sizeHint是(-1,-1)?我認爲這個問題導致我所有的其他問題,因爲如果sizeHint是無效的,那麼sizeConstraintsizePolicy將不會對QGroupBox有影響。我期待父部件有一個比兒童佈局更大一點的sizeHint。使用Designer創建小部件和佈局(也許這是相關的,我有一個複雜的界面,所以我必須使用Designer)。

更新:我看着在setupUi方法中生成的代碼,似乎一箇中介部件被創建,使用按鈕的佈局被放置在插件和插件被放置在QGroupBox。我認爲這是爲了在設計器中可以在小部件中放置佈局並且還可以調整其大小的功能。 使用設計器時,我可以跳過這個小部件嗎?

回答

4

。我找到了解決方案,在設計器中,您可以選擇您想要佈局的小部件,然後單擊網格/表格/水平等按鈕/菜單中的佈局。此選項將創建一個不可見的小部件,將選定的小部件放置在佈局上並將該佈局設置爲不可見小部件。爲了避免這種情況,你可以點擊組合框並點擊佈局上下文菜單並設置菜單,這將對齊窗口小部件,但佈局在窗口小部件樹中不可見。

2

我想這是因爲你實際上沒有set the layout到你的QGroupBox部件。看看下面添加行到窗口構造函數可以解決這個問題:

ui->groupBox->setLayout(ui->horizontalLayout); 

其中GROUPBOXhorizo​​ntalLayoutQGroupBox和問題QHBoxLayout

+0

是的,這是原因,但我需要一個設計器解決方案,所以我可以看到它在設計器內部工作,我正在Comlex接口上工作。我找到了解決方案,在設計器中,您可以選擇您想要佈局的小部件,然後單擊網格/表格/水平等按鈕/菜單中的佈局。此選項將創建一個隱形小部件,將所選小部件放置在佈局上並將該佈局設置爲隱藏小部件。爲了避免這種情況,你可以點擊組合框並點擊佈局上下文菜單並設置菜單,這將會對小部件進行排序,但佈局不能在小部件樹中運行。 – simion314 2011-04-07 08:12:21