2013-02-26 78 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