IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Probléme argument pour une fonction d'un SLOT


Sujet :

Qt

  1. #1
    Membre du Club Avatar de guillaume40
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 97
    Points : 41
    Points
    41
    Par défaut Probléme argument pour une fonction d'un SLOT
    Bonjour,
    Je veux créer un petit programme en C++ avec Qt
    Ce programme je l'ai déja fait mais sans Qt.
    En gros ce programme appelle une fonction qui suivant la valeur emmise en argument lors de l'appel de la fonction écrit un texte différent.
    Exemple :
    write(1) > çà écrit Bonjour dans un fichier
    write(2) > çà écrit çà vas ?
    Etc....
    Mais avec Qt j'ai créer une fonction write
    Et pour l'appeller c'est un SLOT :
    QObject::connect(m_bouton, SIGNAL(clicked()), this, SLOT(write(1)));
    Mais çà n'écrit rien.
    Et si je fait pareil sauf que la fonction write() n'attend pas d'argument sa créer le fichier et çà écrit dedans.
    Le probléme sans argument çà ne peut écrire qu'une seule chaine...

  2. #2
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    On ne passe pas d'arguments dans une connection. Jamais.
    Il te faut une autre solution qui puisse être le QSignalMapper ou garder l'état de ce que tu veux comme, par exemple, membre de classe. Sans savoir le but, difficile de te conseiller davantage.

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Dio,

    Dans une connexion, il faut impérativement que SLOT et SIGNAL aient le même nombre d'arguments, et que ces arguments soient 2 à 2 du même type.

    Il te faut donc un slot write() sans argument pour pouvoir utiliser le signal clicked() qui n'en a pas, et ensuite te débrouiller pour faire ce que tu veux.
    Si les cons volaient, il ferait nuit à midi.

  4. #4
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Citation Envoyé par droggo Voir le message
    Dans une connexion, il faut impérativement que SLOT et SIGNAL aient le même nombre d'arguments, et que ces arguments soient 2 à 2 du même type.
    Avec l'exception qu'un slot peut avoir moins d'arguments que le signal (mais ceux qui y sont doivent être parfaitement mappé de droite à gauche, comme pour des arguments par défaut quoi).

Discussions similaires

  1. [Débutant] Vecteur en argument pour une fonction à 2 variables
    Par namklaw dans le forum MATLAB
    Réponses: 8
    Dernier message: 24/10/2014, 12h49
  2. Réponses: 2
    Dernier message: 28/02/2011, 17h03
  3. Réponses: 1
    Dernier message: 01/04/2010, 14h49
  4. [A03] docmd.openmodule pour une fonction avec argument
    Par cbleas dans le forum VBA Access
    Réponses: 1
    Dernier message: 14/03/2009, 13h50
  5. problème de syntaxe pour une fonction
    Par gero123 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 27/07/2007, 12h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo