QSizePolicy真正的意义,文档和想法

时间:2014-01-29 15:47:06

标签: qt qt4 stretch qlayout qsizepolicy

我现在已经和Qt布局系统一起工作了两年。在这段时间之后,我遇到了SizePolicies和Layouts问题。我通常会找到解决方案,但从未真正理解我在做什么。

现在我花了一些时间试图正确理解并为他们建立一个101指南而且永远不会失败。我在关于QWidget的QSizePolicy的文档中找到了这条信息:

  

此属性包含窗口小部件的默认布局行为

     

如果有QLayout管理此窗口小部件的子项,则为大小   使用该布局指定的策略。如果没有这样的QLayout,   使用此功能的结果。

我认为,如果您有一个QLabel,并且您将策略设置为Horizo​​ntal Expanding,Vertical Fixed,那么THE LABEL本身也会改变。 但它根本没有。

阅读时我发现它在LAYOUT中谈到了ITS CHILDREN。那么这是什么意思呢?标签里面没有任何东西,这就是为什么它不起作用?。

关于在QFrame中插入标签并告诉框架是否扩展的问题... QFrame是扩展还是拉伸(取决于同一布局中兄弟小部件的其余部分)或标签是否会扩展或拉伸,而不是QFrame?

多么糟糕......

伸展怎么样?如果在添加窗口小部件时设置拉伸10:

layout->addwidget(label, 10, Qt::AlignHCenter);

它也不起作用。

添加小部件时拉伸0意味着:采取我告诉你的政策。默认值取决于窗口小部件的类型。类按钮的小部件已经扩展固定。盒式扩展扩展......

拉伸10意味着:增长最大。

我是对的吗?好。当里面有QFrame和QLabel时,设置扩展,然后选择10以拉伸到标签不工作。

1 个答案:

答案 0 :(得分:0)

我不明白你的所有问题,所以我只回答那些我认为的问题。

  • 我认为,如果您有一个QLabel,并且您将策略设置为Horizo​​ntal Expanding,Vertical Fixed,THE LABEL本身 改变了这种方式。但它根本没有。

我不知道这意味着什么。你期待的确切行为是什么,实际发生了什么?这个标签是在布局中吗?这个布局中还有其他小部件吗?

  • 关于在QFrame中插入标签并告诉框架是否正在扩展......

如果您为QSizePolicy对象设置QFrame并为其设置布局,则可能会忽略此大小政策。 Docs如果有一个管理此窗口小部件子项的QLayout,则使用该布局指定的大小策略。如果没有这样的QLayout,则使用此函数的结果。这意味着窗口小部件的布局应该管理窗口小部件的大小。请注意,它仍将遵循最小/最大宽度/高度值。

  • 拉伸10表示:增长最多。

是什么让你这么想?拉伸因子取决于布局内的其他小部件。 Docs拉伸因子用于更改彼此成比例的空间小部件的数量。

  • 在内部设置QFrame和QLabel时,设置扩展,然后选择10以拉伸到标签不工作。

不工作怎么样?如果您将QFrame的拉伸设置为1,将QLabel设置为10,则QLabel对象的宽度/高度应始终为10倍(取决于您的布局类型){{1对象。如果你的QFrame有一个布局而且它包含了孩子,那么这可能不会起作用,因为它取决于孩子们的尺寸政策。