2013-02-26 74 views
1

我得到了QHBoxLayout,其中包含2 QWidgets。這兩種QWidgets的具有固定的長寬比(方形)和具有最小通過這樣做擴大QSizePolicyQt - 在佈局中定位'MinimumExpanding'小部件

QSizePolicy policy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); 
policy.setHeightForWidth(true); 
setSizePolicy(policy); 

和實施heightForWidth這樣的:

virtual int heightForWidth (int w) const override { 
    return w; 
} 

現在,我想那些部件來以我的佈局爲中心。因此,我將它們添加到佈局是這樣的:

layout->addWidget(widget1, 0, Qt::AlignCenter); 

然而,這樣他們在他們的首選大小結束,但不佔用全部空間可用的內容。這是爲什麼?看來Qt :: AlignCenter會覆蓋我的SizePolicy?!

與此相反,使用Qt::AlignVCenter實際上會使它們佔據所有可用空間。這是如何融合在一起的?

謝謝你!

回答

1

請注意,Qt::AlignCenter = Qt::AlignVCenter + Qt::AlignHCenter
請注意,如果您設置任何類型的對齊,則表示您希望首選大小(大小提示返回),但對象應以適當的方式進行定位。當你想填滿整個空間時,對齊就沒有意義了。
所以我懷疑你描述的行爲是這樣設計的。

Digression:請注意,QGraphicsWidgets有3個大小提示:最小值,首選值和最大值,所以在這種情況下,當某些對齊擴展大小策略仍然適用時,因爲存在最大大小的小部件。

+0

謝謝!所以這就是'funcionality'...我只是不認爲它是人們想要的,是嗎?另外,我無法在文檔中的任何位置找到它禁用調整大小的選項。無論如何,再次感謝! – nandaloo 2013-02-27 11:08:49