Russian Qt Forum
Ноябрь 23, 2024, 23:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: подскажите как...  (Прочитано 7536 раз)
KontAr
Гость
« : Декабрь 15, 2011, 15:53 »

... реализовать перемещение view над сценой при помощи нажатой правой кнопкой мыши? Функция должна работать только тогда, когда размер сцены больше вью.
Записан
_OLEGator_
Гость
« Ответ #1 : Декабрь 15, 2011, 16:13 »

Код
C++ (Qt)
void QGraphicsView::setDragMode(DragMode mode)
Записан
KontAr
Гость
« Ответ #2 : Декабрь 15, 2011, 18:58 »

не тащит. даже в ассистенте ничего понять не могу (пример с мышами). Можно еще одну подсказку?
Записан
_OLEGator_
Гость
« Ответ #3 : Декабрь 15, 2011, 19:58 »

Подсказка №2
Код
C++ (Qt)
void QGraphicsView::setDragMode(QGraphicsView::ScrollHandDrag);
%QTDIR%\examples\graphicsview\collidingmice
Записан
popper
Гость
« Ответ #4 : Декабрь 15, 2011, 20:14 »

уточни задачу. наверное, нужно перетаскивать видимую область сцены вслед за движением мыши при нажатой правой кнопке, типа как в Adobe Reader с левой кнопкой?
Записан
KontAr
Гость
« Ответ #5 : Декабрь 15, 2011, 20:19 »

подсказка №2 не сработало, я так и делал.

да, именно как в ридере
Записан
KontAr
Гость
« Ответ #6 : Декабрь 15, 2011, 20:24 »

во вью в mousePressEvente я указал setDragMode(QGraphicsView::ScrollHandDrag), а в mouseReleaseEvent вернул как было. что еще нужно сделать?
Записан
_OLEGator_
Гость
« Ответ #7 : Декабрь 15, 2011, 21:44 »

Да, извиняюсь, не досмотрел, что правая кнопка нужна.
Видимо придется реализовывать самому, раз такой функционал нужен.
Записан
KontAr
Гость
« Ответ #8 : Декабрь 16, 2011, 14:57 »

ну нато так нато. за какой параметр вью цепляться? так вроде нет типа viewRect(QrectF *)
Записан
_OLEGator_
Гость
« Ответ #9 : Декабрь 16, 2011, 15:07 »

Можно использовать
Код
C++ (Qt)
void QGraphicsView::ensureVisible ( const QRectF & rect, int xmargin = 50, int ymargin = 50 )
Записан
popper
Гость
« Ответ #10 : Декабрь 16, 2011, 21:12 »

Сейчас не могу посмотреть, как я делал перетаскивание, но точно использовал в переопределенном методе QGraphicsView::mouseMoveEvent функцию
Код:
void QGraphicsView::centerOn ( const QPointF & pos )
а pos рассчитывал по смещению курсора мыши
Записан
KontAr
Гость
« Ответ #11 : Декабрь 17, 2011, 08:57 »

нужно же сначала узнать, какие координаты сцены отображаются? или узнавать центр вью?
Записан
popper
Гость
« Ответ #12 : Декабрь 17, 2011, 15:46 »

центр view
Код:
QGraphicsView::rect().center()
переводим в координаты сцены
Код:
QGraphicsView::mapToScene
Записан
KontAr
Гость
« Ответ #13 : Декабрь 18, 2011, 09:22 »

ерунда какая-то: в mouseMoveEvente команда
Код:
centerOn(mapToScene(rect().center());
не должна что-либо изменять, а область просмотра убегает в правый нижний угол (0 у меня слева внизу). Из-за чего это?
Записан
popper
Гость
« Ответ #14 : Декабрь 18, 2011, 20:42 »


попробуй манипулировать с центром прямоугольника сцены
Код:
 QGraphicsScene::sceneRect
и использовать
Код:
QGraphicsView::mapFromScene
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.093 секунд. Запросов: 21.