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

Discussion :

Comment récupérer la valeur d'une propriété via la fonction connect() ?

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Comment récupérer la valeur d'une propriété via la fonction connect() ?
    Bonjour

    je débute sous Qt Creator.

    j'aimerais savoir s'il est possible de récupérer la valeur d'une ou plusieurs propriétés d'un objet.

    Notamment récupérer une valeur lors de l'appuie sur un bouton (qpushbutton).

    Merci d'avance.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut
    Bonjour,

    - Qt Creator n'est qu'un IDE, je suppose que tu débutes sous Qt ? Designer (qui est aussi intégré à Qt Creator) ?

    - Tout est possible, ce n'est qu'une question de conception... La question manque de précision, oui tu peux relier l'"appui" (pressed ? clicked ? autre ?) sur un bouton à une fonction où tu fais ce que tu veux en fonction de ce que ta conception permet (getters sur les propriétés de l'objet que tu veux...). L'action sur le bouton elle-même n'est qu'un signal à connecter (ou un événement à intercepter) et ne porte rien d'autre que d'éventuelles informations sur l'action-même.

    Il faudrait faire quelques tutoriels donc.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    J'ai télechargé et configuré le sdk (non commercial) de Qt

    Je programme uniquement sur qt creator en c++ donc.
    Je souhaite savoir si lorsque l'on créé un objet ou Widget en l'occurence, on pouvais acceder aux propriétés de l'objet en question.

    j'explique :

    par exemple acceder a la propriété de texte d'un bouton QPushButton

    c'est possible de récuperer cette propriété dans une variable lorsque l'on appuie sur le bouton?

    merci d'avance

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 129
    Points : 68
    Points
    68
    Par défaut
    Bien sûr, c'est tout à fait possible. Les objets prédéfinis sont pourvus de signaux, signaux qui sont envoyés lors d'un évènement (clic sur un bouton par exemple). QPushButton possède un signal clicked(), héritée de la classe QAbstractButton.

    Je te suggère de lire le tutoriel concernant les signaux et slots si ce n'est pas déjà fait : http://matthieu-brucher.developpez.c...t/signal-slot/

    Dans ton cas, tu souhaites donc récupérer la variable texte du bouton lorsque tu cliques dessus. Il faut donc récupérer le signal et le connecter à un slot (une fonction), ainsi, lorsque le signal de clic sera envoyé, le code du slot sera éxécuté.

    ton code devrait ainsi ressembler à ceci :

    A un moment, tu dois réaliser ta conenxion, une fois ton QPushButton
    créé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(my_button, SIGNAL(clicked()), some_pointer, SLOT(recuperer_texte_du_bouton));
    tu peux donc créer le slot suivant qui te renverra le texte du boutton (à condition d'y avoir accès bien sur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void MyClass::recuperer_texte_du_bouton()
    {
        // enregistrer my_button.text() dans une variable membre par exemple
    }
    Sinon il doit aussi être possible de redéfinir un signal émis par click qui envoie directement en paramètre le texte du boutton, mais là, il faut que tu crées une classe dérivée de QPushButton pour lui ajouter ce signal.

    EDIT : L'exemple du tutoriel répond en grande partie à ta question je crois

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    super, j'ai vraiment chercher, mais j'ai pas trouver, je vous remercie.

    Plus claire que ça, ça sera difficile.

    Merci

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 651
    Points : 43 667
    Points
    43 667
    Par défaut utilisation des slots
    Par expérience personnelle de débutant,

    Une fois que tu aura avancé sur la lecture des tuturiaux.

    Pour pouvoir utiliser les slots, il est indispensable d'utiliser la macro Q_OBJECT.

    Grosso-modo pour mon appli :
    J'ai un fichier main.cpp :

    contenant la création de mon objet s'appelant mycode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    include "mycode.h"
     
    Mycode moncode;
    QApplication app(argc,argv);
    moncode.show();
    return app.exec();
    mycode.h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class Mycode : public QMainWindow
    {
    Q_OBJECT
      Mycode()
      {
        code 
        code
      }
    };
    cela te donnera un squelette de départ. J'ai mis du temps à comprendre pour pouvoir faire fonctionner

    En gros, le makefile crée un fichier .cpp (dans mon cas moc_Mycode.cpp) via l'utilitaire moc, celui-ci étant intégré dans l'executable à la compilation. moc est appelé par make.

    Le makefile généré automatiquement par QMake,j'y ai juste ajouté le support de QtXML.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment récupérer la valeur d'une zone texte ?
    Par jessy212 dans le forum Access
    Réponses: 2
    Dernier message: 24/08/2006, 14h59
  2. Réponses: 4
    Dernier message: 07/08/2006, 17h01
  3. Réponses: 1
    Dernier message: 29/07/2006, 10h08
  4. Réponses: 1
    Dernier message: 21/11/2005, 12h07

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