Bonjour à tous
Je me trouve face à un cas que je ne comprend pas. Si quelqu'un pouvait éclairer ma lanterne, ce serait super.
Je travaille avec Qt creator.
Un peu de code pour mieux comprendre le problème :
fichier Images.h // class que plusieurs parties du programme peut utiliser
fichier Images.cpp
fichier FusionOBJ.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #include "Images.h" class FusionOBJ : public QMainWindow { Q_OBJECT public: FusionOBJ(Images & imgStock); /* ... */ private: QAction* objFus; Images & m_imgStock; /* ... */ private slots: void loadObjFus(); /* ... */ }
fichier FusionOBJ.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include "FusionOBJ.h" FusionOBJ::FusionOBJ(Images &imgStock) : m_imgStock(imgStock) { /* ... */ objFus = new QAction(QIcon(":/FUS.png"), "OBJ de fusion", this); connect(objFus, SIGNAL(triggered()), this, SLOT(loadObjFus())); btnFusObj->addAction(objFus); /* ... */ /* ici, la référence m_imgStock pointe bien vers la class Images */ } void FusionOBJ::loadObjFus() { /* ici, la référence m_imgStock pointe dans les choux !! */ }
Quand je lance le programme tout se passe bien. ma référence m_imgStock de la class FusionOBJ pointe bien la class Images.
Mais quand je clique sur le bouton objFus pour lancer la méthode loadObjFus, c'est comme si il s'agissait d'une nouvelle instance de la class FusionOBJ car la référence m_imgStock n'est plus initialisée.
Quelle est la boulette que je fais ?
merci.
Partager