2012-02-22 4 views
5

Я пытаюсь удалить элемент виджета верхнего уровня, если в верхнем уровне нет дочерних узлов. Каков правильный способ сделать это? Я не могу найти вызов API в документации Qt. Безопасно ли просто вызывать удаление в элементе виджета верхнего уровня? Я еще не сталкивался с какими-либо проблемами, но я хотел бы знать, безопасно ли это. Большое спасибо.Как удалить QTreeWidgetItem верхнего уровня из QTreeWidget?

if(topLevelTreeWidgetItem->childCount() > 1) 
    topLevelTreeWidgetItem->removeChild(childItem); 
else 
{ 
    delete topLevelTreeWidgetItem; 
} 

ответ

10

delete Внутри QTreeWidgetItem прямо совершенно безопасно.

Согласно документации для ~QTreeWidgetItem():

Уничтожает это дерево элемент виджета. Элемент будет удален из QTreeWidgets, к которому он был добавлен. Это позволяет в любой момент удалить элемент .

Я использовал delete на многих QTreeWidgetItems на практике, и он работает достаточно хорошо.

+0

Благодарим за подтверждение. Я сделал свои элементы верхнего уровня в своих указателях QTreeWidget QTreeWidgetItem, чтобы ссылаться на них в течение всего моего кода. Создание указателей позволяет легко их удалить и при необходимости повторно инициализировать. –

3

Для удаления верхнего уровня элемента вызова QTreeWidget::takeTopLevelItem метода, а затем удалить возвращенную деталь:

delete treeWidget->takeTopLevelItem(index); 

где индекс индекс элемента, который будет удален.

 Смежные вопросы

  • Нет связанных вопросов^_^