Pregunta

Estoy escribiendo una pequeña utilidad de GUI en QT4 que utiliza un QgraphicsScene. Uno de los elementos rastrea el mouse en el plano horizontal a medida que lo mueve, y manteniendo presionado una tecla modificadora le permite cambiar la rotación del elemento. Al girar elementos, me gustaría que el cursor del mouse cambie a una flecha curvilínea (o algo) y bloquee visualmente en su lugar, por lo que moverlo afecta el elemento pero no el cursor del mouse.

Liberar el modificador colocaría el cursor (previamente invisible) a su punto original: Esto es para evitar que el elemento "salte" a la nueva posición horizontal del mouse después, que es mi principal problema.

Realmente no tengo idea de cómo implementar esto en QT4 que no implique hacer cosas horribles como:

  • Cuando se presiona el modificador, almacene la posición actual del mouse
  • Cambia el cursor a una mapa de bits de nada
  • De alguna manera dibuja un cursor falso en el lugar original (!)
  • Elimine el cursor falso y vuelva a cambiar la posición del mouse cuando esté listo

Esté muy agradecido si alguien puede pensar en una mejor manera de lograr esto. En primer lugar, no estoy demasiado casado con toda la idea del cursor del mouse fijo, pero es la única forma en que puedo pensar en este problema con un esquema de control que de otra manera funciona bastante bien.

Editar: probé el esquema de basura que describí anteriormente y tuve problemas para mover la posición del mouse programáticamente. Todavía estoy tratando de recordar dónde he usado un sistema similar antes: básicamente era una perilla giratoria. Hiciste clic y moviste el mouse hacia arriba y hacia abajo, lo que giró la perilla. Cuando lanzó el botón del mouse, el puntero estaba de vuelta donde inicialmente lo había puesto, en la perilla.

¿Fue útil?

Solución

¿Qué tal usar un filtro de eventos para atrapar QMoUeEvents, mientras esto está sucediendo?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top