6
有沒有辦法讓layoutStretch屬性始終服從?例如。我把它設置爲「1,3,2」,但是第一部分中的一個小部件(標籤)(「1,3,2」中的「1」)展開(當添加更多文本時),然後1:3:2配給不再受到尊重。也就是說,「1:3:2」比例變成更像「3:1:3」的東西。修復佈局的大小
有沒有辦法讓layoutStretch屬性始終服從?例如。我把它設置爲「1,3,2」,但是第一部分中的一個小部件(標籤)(「1,3,2」中的「1」)展開(當添加更多文本時),然後1:3:2配給不再受到尊重。也就是說,「1:3:2」比例變成更像「3:1:3」的東西。修復佈局的大小
你應該看看屬性QWidget::sizePolicy
。它控制佈局在更新幾何圖形時如何尊重其子節點的sizeHint()
。
所以,你需要做的是:請用三個子控件的水平sizePolicy設置爲QSizePolicy::Ignored
佈局忽略子控件的水平sizeHints:
QLabel *label = ...;
...
label->setSizePolicy(QSizePolicy::Ignored, label->sizePolicy().verticalPolicy());
(第二個參數將確保當然,你應該設置每個子部件的大小策略,這個示例代碼僅用於標籤。)
請注意,您的佈局的內容必須是小部件;我認爲嵌套佈局不能被分配一個尺寸策略(但我可能是錯的)。至少使用QtDesigner,沒有辦法將大小策略應用到佈局本身(如果它不是小部件的佈局)。詳情請參閱評論。
在QtDesigner,您可以設置子控件這樣的sizePolicy:
前:
收縮:
選擇的項目佈局:
設定水平尺寸政策「忽略」:
結果:
在QtDesigner我點擊了3個VerticalLayout的部件是在horizontalLayout插件的三個對象之一(具有1:3:2 layoutStretch的那個)。但是,沒有sizePolicy,只有layoutLeftMargin,layoutTopMargin,layoutRightMargin,layoutBottomMargin,layoutSpacing,layoutStretch和layoutSizeConstraint。 –
@DavidDoria我爲QtDesigner添加了屏幕截圖。 – leemes
對不起,我想我還不清楚。我有verticalLayout小部件,它們是horizontalLayout小部件的子項。這些verticalLayout小部件是我想要修復比例的那些,但它們沒有「sizePolicy」屬性。 –