Название: [qt-4.2.0] QTreeView и программная навигация по строкам Отправлено: izoomer от Апрель 25, 2007, 13:31 Подскажите, как сделать программную навигацию по строкам в QTreeView. У меня в программе нет клавиатуры, и упраление навигацией осуществляется внешними сигналами в программу ... вот и нужно сделать перемещение вверх вниз по строкам без клавиатуры и мыши. Может можно как то эмулировать нажатие кнопок, или выполнять методы которые вызываются при нажатии кнопок.
Пробовал сделать свой класс от QTreeView с методами selectNextItem, selectPrevItem Код:
но не работает. Подскажите как сделать. Если через программную навигацию через setCurrentIndex , то тормозит очень нажатие, а через клаву работает, но мне клава не нужна. Название: [qt-4.2.0] QTreeView и программная навигация по строкам Отправлено: Alex Custov от Апрель 25, 2007, 13:55 для Qt3 я бы предложил два варианта (не думаю, что для 4 сильно будет отличаться):
1) эмулировать нажатия клавишь мктодом создания QKeyEvent-а с нужным кодом клавиши и отсылкой его непосредственно дереву с пом. QApplication::postEvent() 2) получить указатель на текущий элемент дерева и дальше плясать от него с помощью nextSibling() или nextChild() + setCurrentItem() и др. Название: [qt-4.2.0] QTreeView и программная навигация по строкам Отправлено: izoomer от Апрель 25, 2007, 17:22 Цитата: "Alex_X" для Qt3 я бы предложил два варианта (не думаю, что для 4 сильно будет отличаться): 1) эмулировать нажатия клавишь мктодом создания QKeyEvent-а с нужным кодом клавиши и отсылкой его непосредственно дереву с пом. QApplication::postEvent() 2) получить указатель на текущий элемент дерева и дальше плясать от него с помощью nextSibling() или nextChild() + setCurrentItem() и др. та нет, все сделал гараздо проще ... moveCursor возврщает новый QModelIndex . Следоватальн просто делаю setCurrentIndex() и все. Но вот задача ... не знаю как реализовать алгорим сделающий следующее .... при перемещении на итем , у которого есть дочерние итемы, он должне развернуться ... и навигация дальше идет в него ... когда доходит до конца дочерних, родитель должен свернуться и переходим к следующему родителю ... то есть автоматом сворачиваться иразворачиваться .... вот ломаю голову , не знаю как сделать. Название: [qt-4.2.0] QTreeView и программная навигация по строкам Отправлено: Racheengel от Апрель 25, 2007, 23:33 рекурсией ИМХО, как же еще...
Название: [qt-4.2.0] QTreeView и программная навигация по строкам Отправлено: izoomer от Апрель 26, 2007, 15:13 Цитата: "Racheengel" рекурсией ИМХО, как же еще... понятное дело ... а вот как , алгоритм .... сделал так вот ... перемещени на следующий ... Код:
но не все сворачиваются при переходе с последнего итема на следующий относительно родителя. добавлено спустя 2 минуты: и есче ... ПОЧЕМУ ТОРМОЗИТ программная навигация ... если кнопками up down на клвиатуре , то летает ... а если так как указано сверху, то думает перед перемещением ... почему !? Название: [qt-4.2.0] QTreeView и программная навигация по строкам Отправлено: Racheengel от Апрель 26, 2007, 21:56 может из за qDebug() ?
Название: [qt-4.2.0] QTreeView и программная навигация по строкам Отправлено: izoomer от Апрель 28, 2007, 10:15 Цитата: "Racheengel" может из за qDebug() ? та не ... что с ними что без них одинаково .... это я уже после торомзов ввел , что бы контролировать. Название: [qt-4.2.0] QTreeView и программная навигация по строкам Отправлено: Разуев Максим от Май 08, 2007, 15:09 Перебирать элементы дерева можно через итератор QTreeWidgetItemIterator.
Он позволяе довольно широко контролировать выбор элемента дерева к которому надо переходить. Получил элемент и задал его как текущий через setCurrentItem. Я так делал для перемещения элементов дерева. |