En effet, le mousePressEvent était hors sujet... s'était une tentative désespéré avant de me coucher.
Ok alors j'ai pas mal avancé, j'ai donc créé une classe "MaScene" et j'y ai ajouté un mouseDoubleClickEvent. tout s'est bien passé, j'ai mis un QDebug pour vérifier le double clique, sa se passe très bien.
aujourd'hui l’événement souris est réglé.
j'ai en revanche un autre problème concernant la ligne
scene->addItem(pointcapt);
pour remettre les choses en place; l'utilisateur via un clique sur un bouton qui ajoute un TextItem a ma scene or le compilo compile bien (pas d'erreurs)
en revanche le programme plante lorsque je clique sur mon bouton qui ajoute l'item dans la scene... en utilisant le débuggeur, c'est cette ligne qui me bloque...
voici le code:
MaFenetre.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| class MaScene;
class MaFenetre : public QMainWindow
{
Q_OBJECT
public:
MaFenetre();
MaScene* scene;
private:
QGraphicsView* vue;
QStatusBar* barreEtat;
public slots:
void addpoint();
}; |
MaFenetre.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| MaFenetre::MaFenetre(): QMainWindow()
{
//définition de la scene
MaScene* scene = new MaScene();
scene->addPixmap(QPixmap(":/images/carte.png"));
//définition de la vue
vue = new QGraphicsView(scene, zoneCentrale);
vue->show();
//appel de fonction
connect(actionAddcapt, SIGNAL(triggered()), this, SLOT(addpoint()));
}
void MaFenetre::addpoint(MaScene *scene)
{
QGraphicsTextItem *pointcapt = new QGraphicsTextItem("capteur X");
pointcapt->setFlag(QGraphicsTextItem::ItemIsMovable);
pointcapt->setFlag(QGraphicsTextItem::ItemIsSelectable);
pointcapt->setPos(650,315);
scene->addItem(pointcapt);//c'est a cette ligne que le programme plante...
} |
MaScene.h:
1 2 3 4 5 6 7 8 9 10
| class MaScene : public QGraphicsScene
{
Q_OBJECT
public:
MaScene();
protected:
void mouseDoubleClickEvent ( QGraphicsSceneMouseEvent *event );
}; |
et enfin MaScene.cpp
1 2 3 4 5 6 7 8 9 10 11
| MaScene::MaScene() : QGraphicsScene()
{
}
void MaScene::mouseDoubleClickEvent ( QGraphicsSceneMouseEvent *event )
{
qDebug()<<"dbclick";
if (event->type() == QEvent::GraphicsSceneMouseDoubleClick) {
void pointregister();
}
} |
en tout cas merci beaucoup pour ton aide
Partager