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.
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.
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.
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
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éé :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 connect(my_button, SIGNAL(clicked()), some_pointer, SLOT(recuperer_texte_du_bouton));
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.
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 }
EDIT : L'exemple du tutoriel répond en grande partie à ta question je crois![]()
super, j'ai vraiment chercher, mais j'ai pas trouver, je vous remercie.
Plus claire que ça, ça sera difficile.
Merci
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
mycode.h :
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();
cela te donnera un squelette de départ. J'ai mis du temps à comprendre pour pouvoir faire fonctionner
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 } };
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager