crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> мышь в QGraphicsScene
fabricant
  опции профиля:
сообщение 16.1.2012, 12:06
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 10.1.2012
Пользователь №: 3115

Спасибо сказали: 0 раз(а)




Репутация:   0  


У меня 2 вопроса:
1)Как изменить положение курсора в QGraphicsScene? Пробовал

QCursor::setPos(point.toPoint());


курсор переместился но не туда куда мне нужно.
2)Как узнать что пользователь отпустил клавишу мышки(то есть нажал на левую клавишу поводил мышкой и отпустил).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 16.1.2012, 13:18
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Цитата(fabricant @ 16.1.2012, 13:06) *
У меня 2 вопроса:
1)Как изменить положение курсора в QGraphicsScene? Пробовал
QCursor::setPos(point.toPoint());


курсор переместился но не туда куда мне нужно.

если нужно задать положение курсора на сцене используя глобальное положение курсора для этого нужно иметь указатель на представление,
в котором установлена заданная сцена, делается это следующим образом.
QGraphicsView* pView;
pView = ...;//получаем представление.
QPointF scenePos; //позиция на сцене.
scenePos = ...;//задается требуемая позиция.
QPoint inViewPos = pView->mapFromScene(scenePos);//позиция в координатах представления.
QPoint globalPos = pView->mapToGlobal(inViewPos);//глобальная позиция.
QCursor::setPos(globalPos);

этот метод корректен, если позиция, заданная на сцене, видима в данный момент в представлении. В противном случае данный код нужно слегка модифицировать, чтобы курсор не указывал вне области представления сцены.
Приведу один из возможных вариантов.
QGraphicsView* pView;
pView = ...;//получаем представление.
QPointF scenePos; //позиция на сцене.
scenePos = ...;//задается требуемая позиция.
pView->ensureVisible(scenePos.x(), scenePos.y(), 1, 1);//сделать видимой заданную позицию
QPoint inViewPos = pView->mapFromScene(scenePos);//позиция в координатах представления.
QPoint globalPos = pView->mapToGlobal(inViewPos);//глобальная позиция.
QCursor::setPos(globalPos);

Цитата(fabricant @ 16.1.2012, 13:06) *
2)Как узнать что пользователь отпустил клавишу мышки(то есть нажал на левую клавишу поводил мышкой и отпустил).

обработать QGraphicsScene::mousePressEvent(...),
QGraphicsScene::mouseMoveEvent (...),
QGraphicsScene::mouseReleaseEvent(...)
Обработать можно переопределив соответствующие методы класса QGraphicsScene, либо перехватить данные события назначив объекту сцены фильтр событий. (тут уже все зависит от ситуации)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 1.12.2024, 15:04