隐藏QWidget时重新分发布局空间

时间:2013-02-14 01:09:08

标签: c++ qt

我们有一个QGridLayout,它有一个特定的行,如下所示:

+---------------------------+
|     |                |    |
|  A  |       B        |  C |
|     |                |    |
+---------------------------+

有时,隐藏了表示为“B”的QWidget(QLabel)。发生这种情况时,我想要小部件'A'和'C'(两个QButton)重新分配50/50。后来我想把'B'放回流中,给他们20/60/20'的布局。

我已尝试B->hide() B->setVisible(false) layout->removeWidget(B),但在每种情况下,屏幕上仍保留'B的空间。

2 个答案:

答案 0 :(得分:1)

您必须更改布局(因为它是“网格”,所有列都必须缩小)。

不是将所有3都放在GridLayout中,而是将它们添加到您添加的QHBoxLayout中 gridLayout->addLayout(vLayout, 0, row, 1, -1)

答案 1 :(得分:0)

假设你有colspan 10,那么A将需要2列,B - 6和C - 2

您可以像这样添加小部件到布局:

layout->addWidget(A,0,0,1,2); // 2 - is rowspan
layout->addWidget(B,0,2,1,6); // 6 - is rowspan
layout->addWidget(C,0,8,1,2); // 2 - is rowspan

那里:20-60-20,但是当你只需要50和50的A和C时,你需要从布局中删除A,B,C并再次添加它们

layout->addWidget(A,0,0,1,5); // 5 - is rowspan
layout->addWidget(C,0,5,1,5); // 5 - is rowspan