Cliquer sur une image avec QT

Fermé
quent - 11 juil. 2016 à 19:44
 pierre.lagoutte - 19 juil. 2016 à 23:30
Bonjour,

Je débute en C++ et j'utilise QT. J'aimerais créer un petit jeu de cartes pour m'entrainer.
J'ai donc utiliser des QLabel pour afficher les images des cartes mais le problème c'est que je n'arrive pas à créer un slot qui est appelé lors d'un clique sur cette image.
J'ai aussi essayer d'utiliser le setIcon d'un QPushButton mais l'image est beaucoup trop petite donc ça ne convient pas.

En cherchant sur les forums j'ai trouvé 2 solutions : créer un bouton invisible par dessus le QLabel ou alors utiliser le signal mousePressEvent et ensuite vérifier que la souris se situe sur le QLabel.
Le problème c'est que dans les 2 cas il faut connaitre la position du QLabel or je l'ai positionné avec un layout donc je ne connait pas sa position exacte.

Auriez-vous une solution ?
A voir également:

1 réponse

pierre.lagoutte
19 juil. 2016 à 23:30
Bonjour,

Vous pouvez obtenir la position d'un Widget grâce à Qwidget::pos().
Cette fonction revoie un QPoint, il est possible de récupérer les coordonnées grâce à QPoint::x() et QPoint::y().

Voici un exemple :
float x = label.pos().x();
float y = label.pos().y();


Ceci vous donne les coordonnées du coin supérieur gauche. Vous devrez récupérer celles du coin inférieur droit pour voir si le clic de souris se situe entre les deux. Pour ce faire, ajoutez la taille du widget aux coordonnées précédentes.

float supGaucheX= label.pos().x();
float supGaucheY = label.pos().y();
float infDroitX = supGaucheX + label.width()
float infDroitY = supGaucheY + label.height();


Bon courage, n'hésitez pas à répondre à ce post en cas de besoin ;)
-1