我们有一个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的空间。
答案 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