2014-10-06 99 views
0

我目前开始使用qt布局,并遇到一个问题:例如,如果我使用VBoxLayout,那么每个项目与其他项目获得的空间相同,例如,他们平等分隔空间。但在我的情况下,我想有一个90%的空间,另一个空间10%。我已经发现我可以使用sizePolicy,但是如果我想在布局中调整布局的大小(例如,如果我在另一个布局中设置布局和项目),我还没有找到。因此:我怎样才能调整布局?如何调整qt布局中的项目大小?

回答

3

特别为此,您可以使用QBoxLayout::setStretchFactor

该方法设置应该在系数中容纳每个小部件或布局的空间大小。

您可以在那里通过QWidgetQLayout

您可以阅读更多关于弹力系数here

编辑:这里是说明它是如何工作的一个简单的例子:

QFrame* f1 = new QFrame; 
f1->setFrameStyle(QFrame::Box); 
QFrame* f2 = new QFrame; 
f2->setFrameStyle(QFrame::Box); 
QWidget* w = new QWidget; 
QVBoxLayout* l = new QVBoxLayout; 
w->setLayout(l); 
l->addWidget(f1); 
l->addWidget(f2); 
l->setStretchFactor(f1, 1); 
l->setStretchFactor(f2, 2); 
w->show(); 

结果:

enter image description here

+0

,只有当我调整窗口,在启动时不改变作品。 .. – 2014-10-06 10:00:57

+0

@arc_lupus尝试在您的布局上调用包含布局或'QBoxLayout :: invalidate'的布局上的'QWidget :: adjustSize'。 – thuga 2014-10-06 10:08:16

+0

添加了一个示例。它在启动时以及调整窗口小部件时起作用。如果它不适用于你的小部件,你可以尝试@thuga建议的内容,或者至少用代码调整它的大小,或者像这样做。 – Ezee 2014-10-06 10:11:46