C++ 隐藏QWidget时重新分配布局空间
我们有一个QGridLayout,它有一个特殊的行,排列如下:C++ 隐藏QWidget时重新分配布局空间,c++,qt,C++,Qt,我们有一个QGridLayout,它有一个特殊的行,排列如下: +---------------------------+ | | | | | A | B | C | | | | | +---------------------------+ 有时,表示为“B”的QWidget(QLabel)是隐藏的。当这种情况发生时,我希望小部件“A”和“C”(两个QButton)重新分配
+---------------------------+
| | | |
| A | B | C |
| | | |
+---------------------------+
有时,表示为“B”的QWidget(QLabel)是隐藏的。当这种情况发生时,我希望小部件“A”和“C”(两个QButton)重新分配50/50。稍后,我想把“B”放回流程中,并给他们20/60/20的布局
我尝试了
B->hide()
B->setVisible(false)layout->removeWidget(B)
,但在每种情况下,“B的空间仍然保留在屏幕上。您必须更改布局(因为它是一个«网格»,所有列都必须收缩)
不要将所有3个都放在GridLayout中,而是将它们添加到您添加的QHBoxLayout中
gridLayout->addLayout(vLayout,0,row,1,-1)
您必须更改布局(因为它是一个«网格»,所有列都必须收缩)
不要将所有3个都放在GridLayout中,而是将它们添加到您添加的QHBoxLayout中
gridLayout->addLayout(vLayout,0,row,1,-1)
假设您有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
假设你有colspan 10,那么A会有两列,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