Hola:
Ando enredando con el tema de QGraphicsView/QGraphicsScene/QGraphicsItem
He visto este ejemplo:
http://www.walletfox.com/course/qgra...imedrawing.php
y siguiendo la idea he ido añadiendo items (circulos) y una cruceta tipo autoCAD
Pero ahora que me voy enterando de cómo funciona, he querido empezar a separar cosas.
Codigo fuente aquí
Ahora, el problema que tengo es que necesito que los eventos del ratón se me propaguen a los items, y no sé cómo hacerlo.
Por ejemplo, en el código que tengo y que se puede ver en el enlace, la cruceta son dos
QGraphicsLineItem, que responden al movimiento del ratón así:
Código C++:
Ver originalvoid Scene::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
ejeX->setLine(0,event->scenePos().y(),800,event->scenePos().y());
ejeY->setLine(event->scenePos().x(),0,event->scenePos().x(),600);
------------------
(Aqui sigue actuando el evento)
}
Ahora, cuando pretendo que la cruceta sea un objeto propio, sólo se me ocurre lo siguiente para propagar el evento al objeto Cursor:
Código C++:
Ver originalvoid Scene::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
Cruceta->mouseMoveEvent(event);
------------------
(Aqui sigue actuando el evento)
}
Pero a esta "solución" le veo dos fallos:
1.- Me obliga a declarar los métodos de eventos en la clase Cursor (la clase que crea la cruceta) como públicos, cuando son métodos que debería ser
protected, ya que son reimplementaciones de la clase
QGraphicsItem
2.- No me acepta el método
setMouseTracking(bool); , o al menos no funciona
Llevo toda la tarde viendo este ejemplo:
http://doc.qt.io/qt-5/qtwidgets-grap...e-example.html
Y hasta donde he podido entender, es el método QMouseMoveEvent de la propìa escena el que actúa de una u otra forma según el modo en el que esté (edicion, inserción, etc), lo que me lleva a pensar que lo que yo quiero debe de ser un error de diseño, o de concepto, y que supongo que no debería intentar ir por ahí.
Pero bueno, se aceptan sugerencias
Gracias como siempre