[英]Remove Widget from QSplitter
很久以前,有人問過同樣的問題。 如何刪除...
這是答案:
當您隱藏()一個孩子時,其空間將在其他孩子之間分配。 當您再次顯示它時,它將恢復。
我已經嘗試了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
第一個窗口小部件已刪除,新的窗口小部件已添加。 但是我看不到新的小部件。
有人知道嗎?
不要使用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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.