Bonsoir tout le monde,
Sous QtCreator, je voudrais afficher à un endroit donné de ma class QMainWindow personnalisée (qui n'importe pas ici) la position en X et Y du curseur de la souris à chaque instant lors de son déplacement dans la zone centrale de ma fenêtre principale. Ceci impose que je stocke dans deux variables posX et posY la position du curseur à chaque instant.
La zone centrale est un objet Vue, dont la class hérite de QGraphicsView. J'ai donc réimplémenté à l'intérieur de cette class la méthode void mouseMoveEvent(QMouseEvent *event); pour avoir les positions en X et en Y du curseur.
Tout fonctionne correctement à part losque je ferme mon application en cliquant sur la croix de ma fenêtre ou sur Quitter dans mon menu. J'ai alors une fenêtre d'erreur avec le message :
geometryApplication.exe has encountered a problem and needs to close. We are sorry for the inconvenience.
Pour plus de clarté, vous avez ci-dessous un screen de la fenêtre que je rencontre lors de la fermeture de l'application.
Cette fenêtre s'affiche lorsque les lignes suivantes ne sont pas en commentaires :
1 2
| posX = event->pos().x();
posY = event->pos().y(); |
Voici tout de même le contexte :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #include "vue.h"
#include <QWidget>
#include <QtGui>
#include <iostream>
#include <QMouseEvent>
Vue::Vue(QWidget *parent) : QGraphicsView(parent)
{
scene = new Scene();
this->setScene(scene);
}
void Vue::mouseMoveEvent(QMouseEvent *event)
{
//qDebug("%d %d",event->pos().x(),event->pos().y());
posX = event->pos().x();
posY = event->pos().y();
qDebug("%d %d",posX,posY);
QWidget::mouseMoveEvent(event);
} |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #ifndef VUE_H
#define VUE_H
#include <QtGui>
#include "scene.h"
class Vue : public QGraphicsView
{
public:
Vue(QWidget *parent = 0);
private:
Scene *scene;
int posX;
int posY;
protected:
virtual void mouseMoveEvent(QMouseEvent *event);
};
#endif // VUE_H |
Si jamais vous avez une idée, n'hésitez pas ![;)](https://www.developpez.net/forums/images/smilies/icon_wink.gif)
Merci !
PS : lorsque je remplace
1 2
| posX = event->pos().x();
posY = event->pos().y(); |
par
qDebug("%d %d",event->pos().x(),event->pos().y());
directement, sans retenir la valeur dans deux variables posX et posY, il n'y a plus de problème.
Partager