Удаление строк из QTreeWidget (программирование qt) - PullRequest
2 голосов
/ 07 января 2009

Каков наилучший способ удалить строку (QTreeWidgetItem) из QTreeWidget?

Контент QTreeWidget был установлен:

myQTreeWidget->insertTopLevelItems(0, items); // items = QList<QTreeWidgetItem*>

затем я удаляю элемент из "элементов" QList и пытаюсь очистить / сбросить QTreeWidget

packList->clear();    
packList->insertTopLevelItems(0, items);

но мое приложение падает здесь! Предложения?

Ответы [ 2 ]

3 голосов
/ 07 января 2009

Ваша проблема в том, что вызов packList->clear() удаляет элементы виджета дерева, содержащиеся в дереве. (См. Документацию о QTreeWidget::clear(), которая включает примечание об элементах, удаляемых из дерева перед удалением.) Вам нужно будет либо найти способ удалить элементы, либо не вести список их отдельно от дерева .

Если заметить, что вы немного связаны, если вы пытаетесь отслеживать другие данные вместе с деревом, я бы порекомендовал вам использовать парадигму моделей. В нетривиальных случаях обычно стоило потратить время на то, чтобы перейти на эту технику, а не использовать виджеты / элементы.

1 голос
/ 07 января 2009

Из того, что эта документация говорит, вы должны быть в состоянии сделать это с:

packList->takeTopLevelItem(index);

Возвращает, удаляет и возвращает элемент по указанному индексу.

...