用户界面 - Qt - 在布局中居中'MinimumExpanding'小部件



我得到一个QHBoxLayout,其中包含2个QWidgets。这两个QWidgets都有一个固定的长宽比(正方形),并且通过这样做具有最小扩展QSizePolicy:

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实际上会占用所有可用空间。这些是如何结合在一起的呢?

谢谢你!

请注意Qt::AlignCenter = Qt::AlignVCenter + Qt::AlignHCenter .
请注意,如果你设置任何类型的对齐,那么你说你想要首选的大小(什么sizeHint返回),但对象应该以适当的方式定位。当你想要填充整个空间时,对齐就没有意义了。
所以我怀疑你所描述的行为是这样设计的。

题外话:注意QGraphicsWidgets有3个sizeHints:最小,首选和最大,所以在这种情况下,当一些对齐扩展大小策略仍然适用,因为有最大尺寸的小部件可以占用

相关内容

  • 没有找到相关文章

最新更新