我现在已经和Qt布局系统一起工作了两年。在这段时间之后,我遇到了SizePolicies和Layouts问题。我通常会找到解决方案,但从未真正理解我在做什么。
现在我花了一些时间试图正确理解并为他们建立一个101指南而且永远不会失败。我在关于QWidget的QSizePolicy的文档中找到了这条信息:
此属性包含窗口小部件的默认布局行为
如果有QLayout管理此窗口小部件的子项,则为大小 使用该布局指定的策略。如果没有这样的QLayout, 使用此功能的结果。
我认为,如果您有一个QLabel,并且您将策略设置为Horizontal Expanding,Vertical Fixed,那么THE LABEL本身也会改变。 但它根本没有。
阅读时我发现它在LAYOUT中谈到了ITS CHILDREN。那么这是什么意思呢?标签里面没有任何东西,这就是为什么它不起作用?。
关于在QFrame中插入标签并告诉框架是否扩展的问题... QFrame是扩展还是拉伸(取决于同一布局中兄弟小部件的其余部分)或标签是否会扩展或拉伸,而不是QFrame?
多么糟糕......
伸展怎么样?如果在添加窗口小部件时设置拉伸10:
layout->addwidget(label, 10, Qt::AlignHCenter);
它也不起作用。
添加小部件时拉伸0意味着:采取我告诉你的政策。默认值取决于窗口小部件的类型。类按钮的小部件已经扩展固定。盒式扩展扩展......
拉伸10意味着:增长最大。
我是对的吗?好。当里面有QFrame和QLabel时,设置扩展,然后选择10以拉伸到标签不工作。
答案 0 :(得分:0)
我不明白你的所有问题,所以我只回答那些我认为的问题。
我不知道这意味着什么。你期待的确切行为是什么,实际发生了什么?这个标签是在布局中吗?这个布局中还有其他小部件吗?
如果您为QSizePolicy
对象设置QFrame
并为其设置布局,则可能会忽略此大小政策。 Docs:如果有一个管理此窗口小部件子项的QLayout,则使用该布局指定的大小策略。如果没有这样的QLayout,则使用此函数的结果。这意味着窗口小部件的布局应该管理窗口小部件的大小。请注意,它仍将遵循最小/最大宽度/高度值。
是什么让你这么想?拉伸因子取决于布局内的其他小部件。 Docs:拉伸因子用于更改彼此成比例的空间小部件的数量。
不工作怎么样?如果您将QFrame
的拉伸设置为1,将QLabel
设置为10,则QLabel
对象的宽度/高度应始终为10倍(取决于您的布局类型){{1对象。如果你的QFrame有一个布局而且它包含了孩子,那么这可能不会起作用,因为它取决于孩子们的尺寸政策。