Много вещей в QT не могут быть "традиционно" удалены. Вместо этого вызов скрывает () на нем и разрушает его. От документация QSplitter :
при сокрытии () ребенка, его пространство будет распределено среди других детей. Это будет восстановлено при показе () его снова.
Мне нравится ответ Tuminoid. Но если Вам абсолютно нужен в удаленный, попытайтесь получить виджет, который Вы хотите удалить, и вызов setParent( NULL )
на том виджете. Это - мое лучшее предположение.
Мне не ясно, если Вы хотите сохранить виджет и поместить его где-то в другом месте, или если Вы хотите уничтожить виджет.
Уничтожение виджета: , Если можно получить указатель на виджет, можно просто удалить его. Разделитель будет безопасно уведомлен, что его дочерний элемент удаляется и удалит его из себя.
Сохранение виджета: при захвате указателя на виджет можно просто установить его родителя на некоторый другой виджет и добавить его к расположению другого виджета, и он обнаружится там. Это безопасно, потому что QSplitter будет уведомлен, что один из его детей повторно порождается.
, Если Вы хотите установить родителя в NULL (ответ cjhuitt) знать, что Вы теперь ответственны за чистку той памяти, потому что виджет больше не имеет родителя.
Если Вы держите указатель на виджет, то просто удаляют его или используют deleteLater (), если Вы хотите быть на безопасной стороне.
, Если у Вас нет указателя виджета, используйте QSplitter:: виджет (международный индекс) функция. Затем можно использовать, вызывают его deleteLater () слот.
, Если у Вас нет индекса виджета, но Вы все еще знаете имя объекта виджета (), тогда QObject:: findChild () является Вашим единственным способом получить указатель виджета.
Другой простой способ предотвратить удаление дочернего виджета - использовать QSplitter.takeWidget (child). Это также рекомендуемый способ удаления виджета из разделителя. (Документация Qt)