QT liste des signaux (SIGNAL) possibles ?

Résolu
RV2931 Messages postés 185 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 16 juillet 2016 - 24 août 2008 à 21:20
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 24 août 2008 à 23:27
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"

6 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
24 août 2008 à 22:59
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++ (@++)
3
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
24 août 2008 à 22:45
http://doc.trolltech.com/4.4/qpushbutton.html#details


_________________________________________________________________________


VB.NET
is good ...
VB6
is better<
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
24 août 2008 à 22:49
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++ (@++)
0
RV2931 Messages postés 185 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 16 juillet 2016
24 août 2008 à 22:55
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"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
RV2931 Messages postés 185 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 16 juillet 2016
24 août 2008 à 23:15
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"
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
24 août 2008 à 23:27
C'est le seul moyen que je connaisse d'intercepter un événement du curseur sur un widget.

C++ (@++)
0
Rejoignez-nous