qt — QTreeWidget Расширение отдельных элементов из памяти в переполнении стека

У меня есть Qt QTreeWidget и я пытаюсь сохранить состояние элементов заголовка, которые были расширены, так что, когда я обновляю свое дерево новой информацией, оно может повторно развернуть ранее расширенные элементы.

Каждый раз itemExpanded или же itemCollapsed signal испускается я ловлю его в slot и сохранить член boolean для этого конкретного элемента, чтобы представить, развернуто ли сейчас true или же false, Это моя память.

При обновлении дерева я полностью очищаю дерево

clear();

Затем я сверну все заголовки, используя

collapseAll();

Теперь я хочу восстановить, какие элементы были расширены, и установить их для расширения, используя каждый boolean У меня есть, который представляет, был ли элемент был ранее развернут или свернут, используя

expandItem();

Я не совсем уверен, как получить индекс элемента из моего boolean в одиночестве.

Я бы подумал что

indexOfTopLevelItem(0);

Дал бы мне индекс моего toplevelitem в положении 0, а затем с помощью моего boolean связанный с позицией 0, я мог бы тогда решить, стоит ли расширять элемент?

Это также не решает мою проблему желания делать это для каждого «логического», который я представляю для каждого элемента в дереве.

Заранее спасибо.

0

Решение

itemExpanded() Параметр сигнала является указателем на QTreeWidgetItem. С указателем на QTreeWidgetItem, ты можешь позвонить QTreeWidget::indexOfTopLevelItem, который вернет индекс расширенного элемента. Если вы просто храните его вместе со своим логическим значением, у вас должно быть достаточно информации для восстановления состояния элементов после обновления содержимого.

0

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


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