Projet

Général

Profil

QEvent

Je veux détecter quand la souris est au-dessus d'un bouton pour pouvoir faire quelque chose ici dans l'exemple : écrire un texte dans un textEdit.

Il va falloir créer et installer un filtre d'évènement pour chaque élément à surveiller (ici pbbouton1 et pbBouton2)
Tout se passe dans MainWindow

dans mainwindow.h on déclare eventFilter

protected:
bool eventFilter(QObject *obj, QEvent *event);

Dans mainwindow.cpp

on installe les filtres dans le constructeur :

    ui->pbbouton1->installEventFilter(this);
    ui->pbBouton2->installEventFilter(this);

puis on définit le filtre :

bool MainWindow::eventFilter(QObject *obj, QEvent *event)
 {
     if (obj->objectName().contains("pb")) //ici on teste les boutons sur leur nom qui doit contenir pb
         {
         if (event->type() == QEvent::Enter) // La souris entre sur le bouton
         {
             ui->textEdit->setText(obj->objectName()+trUtf8(" Souris entrée"));
             return true;
         }
         else if(event->type() == QEvent::Leave)  //La souris sort
         {
             ui->textEdit->setText(trUtf8("Souris sortie"));
         }
         else
         {
             return false;
         }
     } else {
         // On fait suivre l'event à la classe parent au cas ou il serait utilisé ailleurs
         return QMainWindow::eventFilter(obj, event);
     }
 }

mouse_over.tar.gz - le projet mouse-over (1,73 ko) Jean-Louis Frucot, 09/08/2010 23:07

Redmine Appliance - Powered by TurnKey Linux