很久以前,有人也问过同样的问题。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删除了第一个小部件,并添加了新小部件。但我看不见新的小部件。
有什么主意吗?
发布于 2013-12-02 12:49:47
不要使用delete,而是使用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);
}https://stackoverflow.com/questions/20328437
复制相似问题