2014-01-29 29 views
2

我现在已经用Qt布局系统深入工作了两年。在此之后,我遇到了SizePolicies和Layouts问题。我通常找到解决方案,但从来没有真正明白我在做什么。QSizePolicy真正的含义,文档和想法

现在我花了一些时间来尝试正确理解并为他们构建101 GUIDE并从未失败。我发现这条信息的文档中大约一个QWidget的QSizePolicy:

这个属性保存控件的默认布局行为

如果有QLayout管理此控件的孩子,大小 使用由该布局指定的策略。如果没有这样的QLayout,则使用该函数的结果,即 。

例如,我认为如果您有QLabel,并且您将策略设置为水平扩展,垂直固定,那么标签本身就会改变这种方式。 但它根本没有。

在阅读时,我发现它在布局中讨论了ITS CHILDREN。那么它是什么意思呢?标签内没有任何东西,这是为什么它不起作用?

关于在QFrame中插入标签并告诉框架展开... QFrame将展开还是拉伸(取决于同一布局中的其他兄弟窗口小部件)还是将标签展开或拉伸,不是QFrame?

太乱了......

拉伸?如果在添加小部件时设置拉伸10:

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

它也不起作用。

当您添加小部件时拉伸0:采取我告诉您的策略。默认值取决于小部件的类型。类似按钮的小部件已扩展固定。箱状展开式展开...

展宽10意味着:最大增长。

我是对的吗?好。当内部有一个QFrame和一个QLabel时,将展开设置为10,并将其拖到标签上不起作用。

+0

您是否写过该指南? –

+0

不是。仍然没有......但是当我与Qt密切合作时,我收到了所有这些笔记。我应该这样做:( – darkgaze

+1

其实我只是对这个问题做了一些研究,发现QSizePolicy只与sizeHint有关,没有其他的东西!在QT文档中有很多误导......这里是我的笔记:http://www.cofoh .com/layouts-and-sizepolicy-qt –

回答

0

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

  • 我认为,如果你有一个QLabel,例如,你设置的策略来卧式扩大,垂直固定,标签本身 改变这种方式。但它根本没有。

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

  • 关于在QFrame中插入标签并告诉框架展开...

如果设置了QSizePolicyQFrame对象,并设置布局给它,这种规模的政策可能被忽略。 Docs如果存在管理此小部件子项的QLayout,则使用该布局指定的大小策略。如果没有这样的QLayout,则使用该函数的结果。这意味着小部件的布局应该管理小部件的大小。请注意,它仍将遵守最小/最大宽度/高度值。

  • 拉伸10的手段:增加最大。

是什么让你觉得呢?拉伸因子依赖于布局内的其他小部件。 Docs拉伸因子用于改变多少空间小部件相互成比例。

  • 当具有QFrame和QLabel内,设置扩大,和10至STRETCH时到标签不工作。

不工作怎么样?如果将弹力设置为QFrame设置为1,将QLabel设置为10,则QLabel对象应始终为您的QFrame对象的10倍宽度/高度(取决于您的布局类型)。如果你的QFrame有一个布局并且它包含子项,那么这可能不起作用,因为它取决于儿童大小策略。

+0

谢谢你的回答,我无法测试你问了什么,并告诉我要做什么,我会在我测试时检查它的答案。提醒 – darkgaze

相关问题