Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Aleskey от Января 29, 2008, 01:13



Название: QTreeView – как определить видимые индексы?
Отправлено: Aleskey от Января 29, 2008, 01:13
Здравствуйте
Есть модель, есть прокси модель, все подключено к QTreeView, все замечательно работает. Но надо по нажатию кнопки определить индексы видимых в данный момент в QTreeView  итемов.
Сильно не пинайте. В Qt новичок. Полазил по Assistant и по форуму но что то не чего подходящего не нашел.
Спасибо
ЗЫ. Qt 4.2.2 


Название: Re: QTreeView – как определить видимые индексы?
Отправлено: ритт от Января 29, 2008, 02:30
индексы в модели? смотри документацию по проксе и абстрактпроксе (мап2соурч, кажись)
советую переходить на 4.3(.3), т.к. в 4.2.х прокси довольно ущербные


Название: Re: QTreeView – как определить видимые индексы?
Отправлено: Aleskey от Января 29, 2008, 09:24
Да, мне нужны индексы в модели. Объясню поподробнее. Данные хранятся в модели в QList-е. С помощью прокси они фильтруются в QTreeView. mapToSource используется. По одиночному клику на итеме в QTreeView я без проблем получаю нужный индекс в модели и достаю нужные данные. Сейчас мне надо получить все индексы итемов видимых в данный момент на экране в QTreeView. Мне надо что то похожее на selectedIndexes() у QItemSelectionModel. Оно возвращает  QModelIndexList выделенных в данный момент итемов. Только мне надо не выделенных а видимых в данный момент итемов.
Перейти на 4.3 нельзя. У заказчика версия 4.2.2
Спасибо.


Название: Re: QTreeView – как определить видимые индексы?
Отправлено: Tonal от Января 29, 2008, 13:43
А кто мешает просто пройтись по итемам фильтра?
Если тебе нужны именно видимые, тогда этот список можно отфильтровать по QTreeView::visualRect(item).isValid(), например.
Или с помощью indexAt узнать верхний элемент, и перебирать пока видимые. :-)


Название: Re: QTreeView – как определить видимые индексы?
Отправлено: ритт от Января 29, 2008, 13:50
видимо, я недопонял первоначальный вопрос

если строк не много, перебирай визуалРект всех имеющихся индексов :)
/* сейчас не могу ничего умнее предложить - нет времени лезть в асистант */

АПД: либо у Тонал'а тоже нет времени, либо других вариантов просто нет