有人可以解释 QT 中的尺寸提示、尺寸政策、尺寸约束吗?

Posted

技术标签:

【中文标题】有人可以解释 QT 中的尺寸提示、尺寸政策、尺寸约束吗?【英文标题】:Can someone explain size hint, size policy, size constraint in QT? 【发布时间】:2013-12-18 03:14:28 【问题描述】:

谁能清楚解释这三个概念?有什么区别以及如何使用它们?

【问题讨论】:

【参考方案1】:

在我理解 Qt 的布局管理之前,我也很困惑。根据其docs:

当您将小部件添加到布局时,布局过程如下:

    所有小部件最初将根据它们的 QWidget::sizePolicy() 和 QWidget::sizeHint() 分配一定数量的空间。

    如果任何小部件设置了拉伸因子,其值大于零,则它们将按其拉伸因子的比例分配空间(如下所述)。

    如果任何小部件的拉伸因子设置为零,则只有在没有其他小部件需要空间时,它们才会获得更多空间。其中,空间首先分配给具有扩展大小策略的小部件。

    分配的空间小于其最小尺寸(如果未指定最小尺寸,则为最小尺寸提示)的任何小部件都将分配其所需的最小尺寸。 (小部件不必有最小尺寸或最小尺寸提示,在这种情况下,拉伸因子是它们的决定因素。)

    分配的空间超过其最大尺寸的任何小部件都将分配它们所需的最大尺寸空间。 (小部件不必有最大尺寸,在这种情况下,拉伸因子是它们的决定因素。)

sizeHint()是QWidget的推荐大小,widget父级的Layout会考虑sizeHint()sizePolicy()来确定子widget可以容纳的空间。

【讨论】:

【参考方案2】:

尺寸提示是小部件的首选尺寸,布局会尽量保持它尽可能接近这个尺寸。

尺寸政策描述了当首选尺寸无法使用(可以拉伸或收缩)时尺寸可能发生的变化,请参阅QSizePolicy::Policy 枚举以了解每种尺寸的说明。

大小约束是小部件可以达到的最大尺寸和最小尺寸。

【讨论】:

按照这个解释,maximumSizemaximumSizeHint之间的关系是什么? @user35443 我相信maximumSizemaximumSizeHint 分别指的是尺寸约束和尺寸提示。 maximumSize 和 minimumSize 可以由小部件的 user 设置。 minimumSizeHint 可以由小部件的实现 设置。我认为 qt5 中不存在 maximumSizeHint。

以上是关于有人可以解释 QT 中的尺寸提示、尺寸政策、尺寸约束吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Qt 获取屏幕尺寸?

Qt在控件未显示时如何获取正确的控件尺寸

Mac OSX 中的文本大小比使用 Qt 的 Windows 小。我想在任何地方都有相同的尺寸

Qt C++ 可调整大小矩形的最小尺寸

Qt 3D条形图在大尺寸上变得无响应

qt4.8.3中checkbox的大小如何改变?不是整个checkbox的尺寸,是中间那个打钩的小方块的尺寸。