很久以前,有人问了同样的问题。 How to remove...
这就是答案:
当你隐藏()一个孩子时,它的空间将分配给其他孩子。当你再次展示它时,它将被恢复。
我已尝试过QSplitter::hide()
,show()
,update()
函数以及delete
。
没有任何效果。
//class.cpp
void PlainView::addComponent(QWidget *widget)
{
qDebug() << _splitOne->widget(1);
//delete current widget on index 1
delete _splitOne->widget(1);
//add new widget on index 1
_splitOne->addWidget(widget);
qDebug() << _splitOne->widget(1);
}
//output
QObject(0x0)
QTextEdit(0xa0f580
删除了第一个小部件,并添加了新的小部件。但我看不到新的小工具。
有人有想法吗?
答案 0 :(得分:0)
不要使用删除,而是使用deleteLater()
,您需要先删除旧的小部件:
void PlainView::addComponent(QWidget *widget)
{
qDebug() << _splitOne->widget(1);
QWidget *old = _splitOne->widget(1);
// deparenting removes the widget from the gui
old->setParent(0);
//delete current widget on index 1
old->deleteLater()
//add new widget on index 1
_splitOne->insertWidget(1,widget);
widget->show();
qDebug() << _splitOne->widget(1);
}