QT liste des signaux (SIGNAL) possibles ? [Résolu]

Signaler
Messages postés
185
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
16 juillet 2016
-
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
-
Bonjour,

je me suis mis au C++/QT avec code::blocks, et ça me paraît prometteur, ça a plutôt intérêt, parce que j'ai un gros projet qui arrive et j'ai mis du temps à me décider, mais finalement QT me paraît vraiment pas mal...
Ma question est la gestion de base des évènements, j'ai compris qu'il faut connecter le sender avec le type de signal genre
QObject->connect(myPushButton, SIGNAL(clicked()),app,SLOT(quit()));

pour clicked ça fonctionne très bien, mais quand je veux utiliser mousemoveevent, il me dit :"no such signal QPushButton::mousemoveevent()

je voudrais faire la même chose avec l'évênement équivalent "OnMouseMove" qu'on peut trouver en C# ou autres langages plus évolués.
Comment dois-je faire ?? J'ai cherché une liste des évênements disponible pour les QPushButton, je n'ai pas trouvé, et dans Code::Blocks, l'évênement clicked() apparaît avec un petit icone vert, comme toutes les fonctions, alors, c'est impossible de distinguer ce qui est évênement ou simple fonction membre... :o(

Si quelqu'un peut m'aider ?
Il y a un bien une communauté francophone sur QT, je ne crois pas qu'il y ait bcp de developper QT ici non ?

merci

RV

L'intelligence est la chose la mieux répartie chez l'homme, car quoi qu'il en soit pourvu, il a toujours l'impression d'en avoir assez. "Descartes"
A voir également:

6 réponses

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
14
Ceci est géré par la classe QMouseEvent qui est passé en argument du callback mouseMoveEvent:
http://doc.trolltech.com/4.4/qmouseevent.html

Ici sont listé toutes les classes de qt 4.4 et les descriptifs nécessaire:
http://doc.trolltech.com/4.4/classes.html

C++ (@++)
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
12
http://doc.trolltech.com/4.4/qpushbutton.html#details


_________________________________________________________________________


VB.NET
is good ...
VB6
is better<
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
14
mouseMoveEvent n'est pas un signal mais un callback qui est appelé à chaque événement sur le curseur:

#include

using namespace std;

#include <QApplication>
#include <QPushButton>
#include <QMouseEvent>

class MyButton : public QPushButton
{
protected:
    void mouseMoveEvent(QMouseEvent *m);
public:    MyButton(const char *name 0,  QWidget *parent 0);
};

MyButton::MyButton(const char *name, QWidget *parent)
: QPushButton(name, parent)
{
    setMouseTracking(true);
}

void MyButton::mouseMoveEvent(QMouseEvent *m)
{
    cout << m->x() << " " << m->y() << endl;
}

int main (int argc, char *argv[]) {
    QApplication app (argc, argv);
   
    MyButton but("Ceci est un bouton test");
   
    but.show();
   
    return app.exec();
}

Ce code affichera à la console les coordonnées x et y du curseur à chaque fois qu'il se déplacera sur le bouton.

C++ (@++)
Messages postés
185
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
16 juillet 2016

Ok, donc si j'ai bien compris, dès qu'on veut gérer des évênements utilisateurs un peu plus évolués que clicked(), pressed() et released(), on est obligé de dériver le composant de base et de gérer les callbacks et de créer ses propres signaux, ne serait-ce par exemple que pour différencier un left/middle/right/Buttonclicked() ?

L'intelligence est la chose la mieux répartie chez l'homme, car quoi qu'il en soit pourvu, il a toujours l'impression d'en avoir assez. "Descartes"
Messages postés
185
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
16 juillet 2016

Pour les futurs qui se poseront se genre des questions, (et j'avoue pour me faire gagner une petite demie heure de recherche), pourrais-tu compléter ton exemple de la class MyButton afin qu'ils émette un signal genre "mousemove", et qu'il soit réutilisé dans le main avec la fonction connect(&but,SIGNAL(mousemove()),app,SLOT(qque chose)); ?
Si cela est possible biensur et fonctionne biensur.

merci

L'intelligence est la chose la mieux répartie chez l'homme, car quoi qu'il en soit pourvu, il a toujours l'impression d'en avoir assez. "Descartes"
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
14
C'est le seul moyen que je connaisse d'intercepter un événement du curseur sur un widget.

C++ (@++)