Salut,
J'ai créé une sorte de lecteur d'images qui m'arrivent au fur et à mesure. En somme, une sorte de lecteur vidéo.
J'ai surchargé mousePressEvent, mouseMoveEvent et mouseReleaseEvent pour que je puisse dessiner des rectangles sur mon image. A terme, ça servira à annoter la vidéo.
Bref, donc le principe :
mousePressEvent -> je commence le tracé du rectangle, avec la position courante étant le coin supérieur gauche de mon rectangle
mouseMoveEvent -> je continue le tracé du rectangle, avec la position courante étant le coin inférieur droit de mon rectangle, et la position récupérée par le mousePressEvent étant le coin supérieur gauche
mouseReleaseEvent -> je termine le tracé du rectangle : j'ai le coin supérieur gauche et le coin inférieur droit définitif, j'enregistre la position définitive et rajoute définitivement ce rectangle là pour qu'il soit affiché en permanence.
Le hic, c'est que je me retrouve desfois avec un déclenchement de mouseReleaseEvent sans qu'il n'y ait de mousePressEvent avant. Ca fait que des données que je tente de récupérer dans le mouseReleaseEvent ne sont pas valides (il y a un pointeur très important dans le lot, par exemple), car pas initialisée lors d'un mousePressEvent, et je suis coincé. Pour ne plus que ça plante, je controle la validité des données avant de lancer tout mon tintouin du mouseReleaseEvent, mais toujours est-il que desfois, quand je clique, ça n'appelle pas mousePressEvent mais ça appelle mouseReleaseEvent, et sans raison particulière.
Une idée pour résoudre ce soucis ? Peut-être mettre un sleep(1 milliseconde) quelque part pour donner un peu d'air à la boucle de traitement d'évènements ?
Partager