Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Problema al implementar mouseMoveEvent en QGraphicsRectItem
#1
Buenas noches, Al ejecutar el código, no logro hacer que se ejecute el evento mouseMoveEvent.  Se dibuja el rectángulo, si hago clic con el botón derecho, se ejecuta el "contextmenuEvent", pero en ningún momento se ejecuta el "mouseMoveEvent", en donde estoy fallando.
Michas gracias


[font="JetBrains Mono", monospace]from pruebas.Pantalla import Pantalla

pantalla = Pantalla()
uno = 1
pantalla.get_pantalla(uno)[/font]



pantalla.py

[font="JetBrains Mono", monospace]import sys

from PyQt5 import QtWidgets, QtCore, QtGui

class Pantalla(QtWidgets.QGraphicsScene):

    def __init__(self):
        self.n = 0

    @staticmethod
    def get_pantalla(uno):
        app = QtWidgets.QApplication(sys.argv)
        scene = QtWidgets.QGraphicsScene()
        view = QtWidgets.QGraphicsView(scene)
        view.resize(640, 480)

        it_rect = MyRectButton(QtCore.QRectF(0, 0, 100, 100), 50)
        scene.addItem(it_rect)

        view.show()
        print("UNO" + str(uno))
        sys.exit(app.exec_())

    def mouseMoveEvent(self, event):
        print("Evento mouseMoveEvent")


class MyRectButton(QtWidgets.QGraphicsRectItem):
    def __init__(self, rect, x):
        super(MyRectButton, self).__init__(rect)
        self.x = x
        print("XX: " + str(self.x))

    def contextMenuEvent(self, event):
        print("contextMenuEvent")
        print("X: " + str(self.x))

    def mouseMoveEvent(self, event):
        print("mouseMoveEvent")
        #print(self.altura)
[/font]
Responder
#2
Hola, bienvenido.

Me parece que el evento que estás buscando es hoverMouseEvent, que es invocado cuando el mouse pasa por encima de tu gráfico. Para habilitarlo, primero tenés que llamar a setAcceptHoverEvents():

  1. class MyRectButton(QtWidgets.QGraphicsRectItem):
  2. def __init__(self, rect, x):
  3. super(MyRectButton, self).__init__(rect)
  4. self.x = x
  5. print("XX: " + str(self.x))
  6. self.setAcceptHoverEvents(True)
  7.  
  8. def contextMenuEvent(self, event):
  9. print("contextMenuEvent")
  10. print("X: " + str(self.x))
  11.  
  12. def hoverMoveEvent(self, event):
  13. print("hoverMoveEvent")
  14. #print(self.altura)


Saludos
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)