1

我们有一个 QGridLayout ,它有一个特定的行,排列如下:

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

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

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

4

2 回答 2

1

你必须改变你的布局(因为它是一个«网格»,所有的列都必须缩小)。

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

于 2013-02-14T03:01:29.880 回答
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 x 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
于 2013-02-14T11:39:40.720 回答