Название: Вопрос по QTreeWidget Отправлено: Acrobat от Декабрь 24, 2016, 18:08 Доброго времени суток. Есть небольшой вопрос по QTreeWidget. Вот создавал я много корневых Item. После этого, как мне обратиться к любому из них? Сохранить все указатели на Itemы в контейнере и в случае необходимости добывать от туда указатель и создавать дочерние элементы?
Название: Re: Вопрос по QTreeWidget Отправлено: Swa от Декабрь 24, 2016, 18:32 http://doc.qt.io/qt-4.8/qtreewidget.html#topLevelItem (http://doc.qt.io/qt-4.8/qtreewidget.html#topLevelItem) ?
Название: Re: Вопрос по QTreeWidget Отправлено: ingwarsmith от Январь 06, 2017, 20:17 Для обращения к item'у по его индексу:
Код: QTreeWidgetItem* QTreeWidget::topLevelItem(int index) const Наоборот, для определения индекса item'а верхнего уровня (index): Код: int QTreeWidget::indexOfTopLevelItem(QTreeWidgetItem * item) const Удобным может оказаться и такой вызов (возврат указателя выделенного элемента QTreeWidget): Код: QTreeWidgetItem* QTreeWidget::currentItem() const Для случая большого числа корневых элементов это более удобно. Была необходимость создания достаточно разветвленного QTreeWidget, с каждым корневым элементом которого сопоставляется проект расчета, производимого программой и структура дочерних элементов элемента проекта строго типизированная. Для реализации такого дерева использовался потомок QTreeWidget из элементов TreeElement (потомок QTreeWidgetItem с указанием типа элемента ч/з enum). В дереве для индексации по корневым элементам использован QMap<int, TreeElement>. Разумеется, данные проекта расчета хранятся в других объектах (различных типов), хранящихся в контейнерах, причем каждый объект данных хранит указатель на соответствующий элемент TreeElement в дереве. Всего же всех элементов дерева, как правило, не более 80 (определяется числом открытых в программе проектов расчета). |