Bonjour,

//Je préviens, je suis pas un caid en QtCreator//

But : J'aimerais qu'en cliquant sur une icône, cette icône change de couleur.

Je présente la situation. J'ai créé avec QtDesigner une QDialog (cette QDialog remplit certaines fonctionnalités) dans laquelle j'ai placé un QLabel dans un QWidget. Cette QLabel, je l'ai promu en QLabelPerso.



J'ai créé ma classe QMonLabel comme ca :
le qlabelperso.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
16
17
18
19
 
#ifndef QLABELPERSO_H
#define QLABELPERSO_H
 
#include <QLabel>
#include <QWidget>
 
class QLabelPerso : public QLabel
{
    Q_OBJECT;
 
public:
    QLabelPerso();
    QLabelPerso(QWidget* parent = 0);
    void remplirLabel (QImage img);
 
};
 
#endif // QLABELPERSO_H
et le qlabelperso.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
15
16
17
18
19
20
21
 
#include "qlabelperso.h"
 
#include <iostream>
 
 
QLabelPerso::QLabelPerso()
{
 
}
 
QLabelPerso::QLabelPerso(QWidget* parent) :
        QLabel(parent)
{
 
}
 
void QLabelPerso::remplirLabel(QImage img)
{
    this->setPixmap(QPixmap::fromImage(img));
}
Dans la QDialog, le QLabel est nommé comme ca : "Points"
Le mainwindow.cpp contient cette ligne pour afficher l'image dans le QLabel
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
this->uiDial.Points->remplirLabel(QImage("Points.bmp"));
this->uiDial.Points->adjustSize();
Jusque qu'ici, tout va bien, l'image s'affiche.
A présent, j'aimerais changer la couleur lors d'un clic souris sur ce label.
Pour cela, j'ai rajouté la méthode MousePressEvent qui emet un signal quand je clique avec la souris dans qlabelperso.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
protected:
    void MousePressEvent (QMouseEvent * event);
 
signals:
    void cliqueImg ();
et dans qlabelperso.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
void QLabelPerso::MousePressEvent (QMouseEvent * event)
{
    //Affichage pour vérifier que l'evenement souris est percu
    std::cout << "emit cliqueImg" << std::endl;
    emit cliqueImg();
}
dans le mainwindow.cpp, j'ai rajouté la connexion :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
connect (this->uiDial.Points, SIGNAL(cliqueImg()), this, SLOT (actionAFChangeTri()));
Vision d'ensemble de ma classe :
.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
16
17
18
19
20
21
22
23
24
 
#ifndef QLABELPERSO_H
#define QLABELPERSO_H
 
#include <QLabel>
#include <QWidget>
 
class QLabelPerso : public QLabel
{
    Q_OBJECT;
 
public:
    QLabelPerso();
    QLabelPerso(QWidget* parent = 0);
    void remplirLabel (QImage img);
 
protected:
    void MousePressEvent (QMouseEvent * event);
 
signals:
    void cliqueImg ();
};
 
#endif // QLABELPERSO_H
.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
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
#include "qlabelperso.h"
 
#include <iostream>
 
 
QLabelPerso::QLabelPerso()
{
 
}
 
QLabelPerso::QLabelPerso(QWidget* parent) :
        QLabel(parent)
{
 
}
 
void QLabelPerso::remplirLabel(QImage img)
{
    this->setPixmap(QPixmap::fromImage(img));
}
 
void QLabelPerso::MousePressEvent (QMouseEvent * event)
{
    std::cout << "emit cliqueImg" << std::endl;
    emit cliqueImg();
 
}
Résultat :
Quand je clique sur mon label, il n'y a pas l'affichage montrant que je passe dans la fonction MousePressEvent.

Pourquoi ca ne fonctionne pas ?

Je vous remercie par avance si vous pouvez me dire si j'ai oublié quelque chose, ou si je me plante completement