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