Удалить виджет из 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

Первый виджет был удален, а новый виджет добавлен. Но я не вижу новый виджет.

У кого-нибудь есть идея?

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);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]