Qt4: блокировка курсора мыши на месте во время манипулирования QGraphicsItem - PullRequest
1 голос
/ 03 марта 2010

Я пишу небольшую утилиту с графическим интерфейсом в Qt4, которая использует QGraphicsScene. Один из элементов отслеживает мышь в горизонтальной плоскости при ее перемещении, а нажатие клавиши-модификатора позволяет изменять вращение элемента. При вращении элементов я бы хотел, чтобы курсор мыши изменился на изогнутую стрелку (или что-то еще) и зафиксировал визуально на месте, поэтому перемещение его влияет на элемент, но не на сам курсор мыши.

Освобождение модификатора поместит (ранее невидимый) курсор обратно в его исходную точку: это предотвращает "прыжок" элемента в новое горизонтальное положение мыши после этого , что является моей главной проблемой.

Я действительно понятия не имею, как реализовать это в Qt4, которое не включает в себя такие ужасные вещи, как:

  • Когда нажата модификатор, сохранить текущую позицию мыши
  • Переключить курсор на растровое изображение ничего
  • Каким-то образом нарисовать фальшивый курсор в исходном месте (!?)
  • Удалить поддельный курсор и переключить положение мыши обратно, когда закончите

Буду очень признателен, если кто-нибудь сможет придумать лучший способ добиться этого. Во-первых, я не слишком привержен идее фиксированного курсора мыши, но это единственный способ обойти эту проблему с помощью схемы управления, которая в остальном работает довольно хорошо.

Edit: я попробовал схему дерьма, которую я обрисовал выше, и столкнулся с проблемами программного перемещения положения мыши. Все еще пытаюсь вспомнить, где я использовал подобную систему раньше: в основном это была поворотная ручка. Вы щелкнули по нему и двигали мышь вверх и вниз, что вращало ручку. Когда вы отпустили кнопку мыши, указатель вернулся на то место, где вы его изначально поместили, на ручку.

1 Ответ

1 голос
/ 04 марта 2010

Как насчет использования фильтра событий для перехвата QMouseEvents, пока это происходит?

...