两年来我一直在深入研究 Qt 布局系统。在此之后,我遇到了 SizePolicies 和 Layouts 的大量问题。我通常会找到解决方案,但从来没有真正理解我在做什么。
现在我花了一些时间来尝试正确理解并为他们构建一个 101 指南并且永远不会失败。我在关于 QWidget 的 QSizePolicy 的文档中找到了这条信息:
此属性保存小部件的默认布局行为
如果有一个 QLayout 管理这个小部件的孩子,则使用该布局指定的大小策略。如果没有这样的 QLayout,则使用此函数的结果。
例如,我认为如果您有一个 QLabel,并且您将策略设置为水平扩展、垂直固定,那么标签本身就会改变这种方式。但它根本没有。
阅读时,我看到它在布局中谈论它的孩子。那么它是什么意思呢?标签内没有任何内容,这就是它不起作用的原因吗?
如何在 QFrame 中插入标签,并告诉框架正在扩展... QFrame 会扩展或拉伸(取决于同一布局中的其他兄弟小部件)还是标签会扩展或拉伸,而不是 QFrame?
真是一团糟...
拉伸呢?如果在添加小部件时设置拉伸 10:
layout->addwidget(label, 10, Qt::AlignHCenter);
它也不起作用。
添加小部件时拉伸 0 意味着:采用我告诉你的政策。默认值,取决于小部件的类型。类似按钮的小部件具有扩展固定功能。盒状扩展-扩展...
Stretch 10 表示:最大增长。
我对吗?出色地。当内部有 QFrame 和 QLabel 时,将 Expanding 和 10 设置为拉伸到标签不起作用。