Название: абсолютный индекс элемента QtreeWidget Отправлено: алексей от Январь 19, 2009, 14:44 Здравствуйте !! Как я понимаю для определения индекса элемента в QtreeWidget есть две функции - если есть потомок indexOfChild, и если нет - indexOfTopLevelItem
Для определения индекса элемента для удаления использую следующий код: Код: if (ui.treeWidget->currentItem()->parent()) Название: Re: абсолютный индекс элемента QtreeWidget Отправлено: lex_newton от Январь 19, 2009, 15:08 Понятия не имею, что такое AbsoluteIndex в Delphi. Но возможно тебе нужно это: treeWidget->currentIndex().internalId()
Код: QMessageBox::information(this, QString( "Current Internal Id" ), QString::number( treeWidget->currentIndex().internalId() ) ); Название: Re: абсолютный индекс элемента QtreeWidget Отправлено: Dendy от Январь 19, 2009, 15:16 internalId() и internalPointer() - это вспомогательные детали реализации модели, использоваться они могут исключительно внутри неё. По теме: а зачем вам этот индект вообще нужен?
Название: Re: абсолютный индекс элемента QtreeWidget Отправлено: lex_newton от Январь 19, 2009, 15:22 Я всеголишь предположил, что может являться аналогом AbsoluteIndex. (VCL я не знаю)
Название: Re: абсолютный индекс элемента QtreeWidget Отправлено: алексей от Январь 19, 2009, 15:54 internalId() и internalPointer() - это вспомогательные детали реализации модели, использоваться они могут исключительно внутри неё. По теме: а зачем вам этот индект вообще нужен? Переделывание проекта с delphi - он используется для привязки в базах....можно конечно и подругому, но придется вообще тогда все менять... Название: Re: абсолютный индекс элемента QtreeWidget Отправлено: pastor от Январь 19, 2009, 16:05 ...можно конечно и подругому, но придется вообще тогда все менять... Мой совет - не старайтесь портировать код с Делфи на Qt 1:1. Возмите за основу лишь логику работы отдельно взятых частей программы. Если нет прямых аналогов в Qt - переписывайте этот участок кода с использованием средст Qt. Название: Re: абсолютный индекс элемента QtreeWidget Отправлено: алексей от Январь 22, 2009, 14:56 Понятия не имею, что такое AbsoluteIndex в Delphi. Но возможно тебе нужно это: treeWidget->currentIndex().internalId() Код: QMessageBox::information(this, QString( "Current Internal Id" ), QString::number( treeWidget->currentIndex().internalId() ) ); По поводу internalId - оказался пока единственный вариант, пусть даже эта функция не возвращает последовательные значения item с верха дерева, но зато дает уникальные значения, к которым и можно привязаться. Код: QTreeWidgetItemIterator it (ui.treeWidget); Спасибо за подсказку. Не пришлось перелопачивать весь код ! Название: Re: абсолютный индекс элемента QtreeWidget Отправлено: NordOrK от Март 12, 2009, 10:58 Не самое лучшее решение, т.к. ID меняется. :(
Название: Re: абсолютный индекс элемента QtreeWidget Отправлено: nn1317 от Март 17, 2009, 01:04 действительно кривоватое решение. сталкивался с сабжем, думал просто пройтись циклом фор по всем элементам дерева))
по сути это граф. можно пронумеровать самому, ниче сложного нет - хоть поиском в глубину, хоть в ширину. но имхо лучше все таки поправить логику алгоритма - обычно ищут родителя, а затем перебирают всех его сыновей и тд. а это в qt делается очень легко) |