Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.7.1 - Qt Creator : 4.2.0 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

problème pour activer un slot

Bonjour,

Voici mon problème :
Pour faire simple j'ai crée une application dérivant de QMainWindow.
Dans la barre de menu j'ai crée une entrée categorie puis un choix test.

Lorsque que l'utilisateur appuie sur test je veux déclencher un évenement, par exemple afficher un message.
J'ai donc rattaché à test le signal activated avec ma classe principal (j'en ai qu'une !) comme recepteur.

Le fait est qu'en lançant la compilation mes sources ne changent pas, je me demande ou mettre le code relatif à l'action que je veux.

Par curiosité au lieu de mettre dans action j'ai mis close, tous marche parfaitement en cliquant sur test mon application se forme, cependant en analysant mes fichiers sources je ne vois nulle ce traitement de tache.

Ma question est donc ou mettre le code relatif a l'activation d'un élèment d'un menu.

J'espère avoir été clair ! :-p

merci

Réponses

  • Bonsoir,

    Ton post n'etant pas relatif a Monkey Studio mais a Qt, je le deplace dans le bon thread ;)

    Ensuite concertant ton probleme de menu,

    Dans la classe mere tu dosi avoir un slot genre : void action_triggered();

    Et tu dois conencter le signal : void triggered() de ton action a ce slot.

    Ce qui donnerai quelque chose du genre :
    connect( a, SIGNAL( triggered() ), m, SLOT( action_triggered() ) );
    Ou a = le pointer de l'action, et m le pointer de la mainwindow

    P@sNox,
  • boris said:
    Par curiosité au lieu de mettre dans action j'ai mis close, tous marche parfaitement en cliquant sur test mon application se forme, cependant en analysant mes fichiers sources je ne vois nulle ce traitement de tache.
    C'est parce que Qwidget a déja un slot "close":
    bool QWidget::close ()  [slot]
    Tu dois définir dans ton .h:
    * la macro Q_OBJECT
    * le code:
     public slots:
    void monSlotDeTest();
    dans le .cpp:
    void maClasse::monSlotDeTest()
    {
    qDebug("slot test !!");
    }
    et, comme dit p@snox, il faut faire le connect quelque part.
Connectez-vous ou Inscrivez-vous pour répondre.