У меня есть Qt QTreeWidget
и я пытаюсь сохранить состояние элементов заголовка, которые были расширены, так что, когда я обновляю свое дерево новой информацией, оно может повторно развернуть ранее расширенные элементы.
Каждый раз itemExpanded
или же itemCollapsed
signal
испускается я ловлю его в slot
и сохранить член boolean
для этого конкретного элемента, чтобы представить, развернуто ли сейчас true
или же false
, Это моя память.
При обновлении дерева я полностью очищаю дерево
clear();
Затем я сверну все заголовки, используя
collapseAll();
Теперь я хочу восстановить, какие элементы были расширены, и установить их для расширения, используя каждый boolean
У меня есть, который представляет, был ли элемент был ранее развернут или свернут, используя
expandItem();
Я не совсем уверен, как получить индекс элемента из моего boolean
в одиночестве.
Я бы подумал что
indexOfTopLevelItem(0);
Дал бы мне индекс моего toplevelitem
в положении 0, а затем с помощью моего boolean
связанный с позицией 0, я мог бы тогда решить, стоит ли расширять элемент?
Это также не решает мою проблему желания делать это для каждого «логического», который я представляю для каждого элемента в дереве.
Заранее спасибо.
itemExpanded()
Параметр сигнала является указателем на QTreeWidgetItem
. С указателем на QTreeWidgetItem
, ты можешь позвонить QTreeWidget::indexOfTopLevelItem
, который вернет индекс расширенного элемента. Если вы просто храните его вместе со своим логическим значением, у вас должно быть достаточно информации для восстановления состояния элементов после обновления содержимого.