![]() |
|
|
![]()
|
|
| kefir01 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 22.6.2007 Репутация: 1 Всего: 2 |
Друзья!
Ищу вашего совета. Необходимо двигать объекты по QGraphicsView. Задача - картография. Много кусочков карт и нанесенные собственые объекты. Хотелось бы узнать с чего стоит начать: 1) Где писать обработку движений - в самом QGaphiccsView или QGraphicsScene? 2) Можно ли двигать сцену и если да, то что для этого курить и откуда копать? 3) Как отрубить скролл? На Mac по-прежнему содержимое двигается жестами трэкбара. Буду рад любой помощи. |
|||
|
||||
| kefir01 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 22.6.2007 Репутация: 1 Всего: 2 |
Хм... неужто никто не двигал картинки? Или я спрашиваю что-то из разряда 2х2=4?
Я в общем-то хотел бы просто принцип понять можно без примеров)) |
|||
|
||||
| asd |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 25.6.2006 Репутация: нет Всего: 1 |
1) Где писать обработку движений - в самом QGaphiccsView или QGraphicsScene?
Не совсем понятно, какого рода обработка. Смена позиции объекта? На сколько помню для этого нужно вызвать setPos для соответствующего объекта, который вы поместили на суену. 2) Можно ли двигать сцену и если да, то что для этого курить и откуда копать? view->verticalScrollBar()->setValue(..) view->horisontalScrollBar()->setValue(..) 3) Как отрубить скролл? На Mac по-прежнему содержимое двигается жестами трэкбара. Совсем не понял, что требуется. Сделать скролбары невидимыми? |
|||
|
||||
| kefir01 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 22.6.2007 Репутация: 1 Всего: 2 |
1) По движению мыши нужно передвигать все объекты карты. Кликнул, потянул - все потянулось. Причем
setPos почему-то не работает. Также необходимо делать несколько инструментов для карт, а потому стандартное поведение не катит. 2) попробую..., но движение отдельных айтемов тоже понадобится 3) как скрыть я знаю. прокрутка срабатывает на жестах. |
|||
|
||||
| hexzo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
||||
|
||||
| kefir01 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 22.6.2007 Репутация: 1 Всего: 2 |
Ставил такой флаг... все кусочки складываются в один QGraphicsItem - mapCanvas, которому при создании присватывается такой флаг.
вот
Это сообщение отредактировал(а) kefir01 - 16.2.2011, 20:30 |
|||
|
||||
| hexzo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
kefir01
У меня всё семейство кусочков таскается в таком минимальном примере.
Это сообщение отредактировал(а) hexzo - 16.2.2011, 21:10 |
|||
|
||||
| kefir01 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 22.6.2007 Репутация: 1 Всего: 2 |
т.е. Может статься так, что родительский айтем не может таскать дочерние если они не имеют флага? Как-то не очень логично...
|
|||
|
||||
| hexzo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
Родитель с флагом таскает дочерние без флага. А дочерние с флагом не таскают родителя без флага.
|
|||
|
||||
| kefir01 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 22.6.2007 Репутация: 1 Всего: 2 |
У родителя в моем случае есть флаг... может быть сцена должна быть больше объекта для того, чтобы его можно было таскать?
|
|||
|
||||
| kefir01 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 22.6.2007 Репутация: 1 Всего: 2 |
С прокруткой разобрался - убирается с помощью реимплементации wheelEvent.
Затупок с движением пока в процессе... |
|||
|
||||
| kefir01 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 22.6.2007 Репутация: 1 Всего: 2 |
Разобрался с движением - имела место моя глупость: родительский айтем не выкладывался на сцену,.
Теперь все вроде как надо (даже дебагер выдает информацию о движении родительского айтема), только дети не отображаются совсем Подозреваю, что это связано с тем, что надо правильно переписать paint() и boundingRect() у родительского айтема в свою очередь унаследованного от QGraphicsItem Вот мой код layer.h
|
|||
|
||||
| kefir01 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 213 Регистрация: 22.6.2007 Репутация: 1 Всего: 2 |
Для тех кому интересно - простое решение заключается в том, чтобы наследоваться не от QGraphicsItem, а от QGraphicsItemGroup и с ней все отлично работает.
|
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |