Давным-давно кто-то задавал такой же вопрос. Как убрать …
Это был ответ:
Когда вы прячете () дочерний элемент, его пространство будет распределено среди остальных дочерних элементов. Он будет восстановлен, когда вы покажете () его снова.
Я попробовал 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
Первый виджет был удален, а новый виджет добавлен. Но я не вижу новый виджет.
У кого-нибудь есть идея?
не используйте удаление, а вместо этого используйте 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);
}
Других решений пока нет …