Tom's Guide > Forum > Programmation > [C++] [Qt] Mouse Event

[C++] [Qt] Mouse Event

Forum Programmation : [C++] [Qt] Mouse Event

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour,

J'ai des soucis avec les evenements de la souris sur mon programme.
J'explique:
J'ai une classe MainWindow qui est décomposé en gridLayout.
Dans ma zone centrale, j'ai instancié une classe MarquageArea qui est elle même composé de 2 petites classe zoneImage à l'aide d'un gridLayout.

J'espere que le "schéma explicatif" de mon programme est compréhensible.

Le problème est donc le suivant:
Je cherche à donner un evenement souris à mes zoneImage. Un Clique sur une zoneImage permet d'ouvrir une fenetre.

Dans ma classe zoneImage, j'ai bien redéfini la fonction mousePressEvent mais celà ne fonctionne pas.

Merci d'avance ;)

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Et avec grabMouse() ? :)

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

ça marche pas :(

Code :
  1. void zoneImage::mousePressEvent(QMouseEvent *e)
  2. {
  3.      grabMouse();
  4.      QMessageBox::information(this, tr("A Propos" ), tr("blabla" ));
  5. }



j'ai pas compris ce qu'est censé faire grabMouse()


Message édité par tonydou le 05-05-2009 à 21:54:27
Répondre à tonydou

En fait c'est dans ta MainWindow que tu fais tonZoneImage->grabMouse(), ça indique que c'est ce widget qui va récupérer tous les évènements souris. Le problème c'est que plus rien d'autre ne prendra la souris.
Si tu gère des évènements dans la fenêtre parent, c'est ce qui te bloque: l'event est géré par le parent et pas renvoyé aux enfants.

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Dans ma fenêtre parent, je gère des actions sur des boutons uniquement.
J'ai redéfini mousePressEvent dans ma classe zoneImage
j'ai fait monMarquageArea->maZoneImage->grabMouse() dans mon constructeur de MyMainWindow et cela ne fonctionne pas, ça bug.

Répondre à tonydou

Si je me souviens bien, il suffit que tu gères un handler (pas forcément de souris) dans une fenêtre pour que celle-ci récupère tous les évènements souris.

J'ai regardé la doc, et j'ai retrouvé ce qu'il fallait faire. Tu gardes ton mousePressEvent dans ZoneImage, mais dans la classe parent, tu dois définir un filtre sur les évènements qu'un widget (ta MainWindow) à renvoyer sur les widgets enfants (tes Zone image).
Pour cela, tu dois faire appel à la méthode installEventFilter() sur tous les widgets enfants susceptibles de récupérer l'évènement, et faire le filtre en surchargeant la méhtode eventFilter() dans ta MainWindow. Donc avec taZoneImage->installEventFilter(taMainWindow), tu va pouvoir rediriger tous les event que tu souhaites.
http://doc.qtsoftware.com/4.5/qobject.html#eventFilter

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Pffiou, finalement j'ai changé complètement la structure de mon programme (j'ai tout mis dans la même classe) et j'ai utilisé les event filter et ça marche bien :)

Par contre, une autre question, jme suis documenté mais j'ai pas réussi à trouver:

J'ai crée des onglets avec QTabWidget et j'aimerai qu'un bouton s'affiche lorsque je change d'onglet. Il faudrait que je redéfinise une fonction je suppose, mais je vois pas laquelle.

Merci

Répondre à tonydou

Je considère que le bouton n'est pas créé dans les onglet, mais à l'extérieur. Alors, il te faut faire ton propre slot, et faire un connect du signal de changement d'onglet sur ton slot. Dans ton slot tu peux créer un bouton.

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Tom's Guide > Forum > Programmation > [C++] [Qt] Mouse Event
Aller à :

Il y a 1865 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens