bonjour
Je développe une interface en QT avec QT JAmbi. Je viens de trouver comment faire pour rendre une image d'un QLABEL cliquable (redéfinition de QLabel avec ajout d'une fonction public void mouseReleaseEvent (QMouseEvent event){...}
Cependant, en lisant les doc, je me suis rendu compte d'un event.accepted(). Voila en C++ ce que ca donne :
Code:
1
2
3
4
5
6
7
8
9 class MonQLabelClickable : public QLabel { Q_OBJECT; public slots: void mouseReleaseEvent ( QMouseEvent * event ) { emit(clicked()); event->accept(); }
j'ai lu toute sorte de doc sur les évenements (http://qt.developpez.com/doc/4.4/qwi...sereleaseevent, http://qt.developpez.com/doc/4.2/eventsandfilters/...) mais je ne comprend pas vraiment l'essence même de ce event.accepted(). En java, voici ce que j'ai développé :
Bref, je redéfinis mon MyQLabel pour qu'il puisse accepter les mouseEvent. Si j'ai bien compris, au release du click sur mon image (mylabel), j'ai cette fonction que est appelé, et j'ai l'event "event" de type QMouseEvent de créé. Le but n'est il pas de délivrer cet event a un autre objet pour interagir? Si oui, ça doit passer par un event.accepted() (il me semble). Mais comment un autre objet peut récupérer l'appel de l'event (genre comment ma fenêtre sait qu'elle doit se fermer par exemple)? Si il n'y a pas de code de bonne conduite, on pourrait à ce moment mettre l'événement entre les parenthèses du if ci dessus. Ca fonctionne, mais ça oblige a créer une autre classe MyLabel2 si on veut qu'un autre label fasse une action différente {alors que sinon on a juste a redéfinir l'event recu non?}. Est ce la bonne conduite ?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class MyQLabel extends QLabel { public MyQLabel() { super(); } public void mouseReleaseEvent (QMouseEvent event) { if(event.button()==MouseButton.LeftButton){ System.out.println("Cliked"); event.accept(); } }
Merci a tous