C++ : Faire passer des infos entre un QWid...
Résolu
duchnoki
Messages postés
158
Date d'inscription
Statut
Membre
Dernière intervention
-
duchnoki Messages postés 158 Date d'inscription Statut Membre Dernière intervention -
duchnoki Messages postés 158 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je ne suis pas encore en PRO en C++ et j'aimerais faire passer des infos entre un QWidget et ma fenêtre principale (QMainWindow).
Explications :
J'ai un formulaire (QWidget) où il y a un QLineEdit et un QDoubleSpinBox.
Quand on appuie sur OK, j'aimerais récupérer les infos à partir de ma fenêtre principale.
Quelqu'un connaîtrait-il la bonne technique pour faire cela ??? Merci !
Je ne suis pas encore en PRO en C++ et j'aimerais faire passer des infos entre un QWidget et ma fenêtre principale (QMainWindow).
Explications :
J'ai un formulaire (QWidget) où il y a un QLineEdit et un QDoubleSpinBox.
Quand on appuie sur OK, j'aimerais récupérer les infos à partir de ma fenêtre principale.
Quelqu'un connaîtrait-il la bonne technique pour faire cela ??? Merci !
10 réponses
Heu c'est pas bien clair.
Le 'QWidget' appartient à qui ? A la fenêtre principale ou à une autre fenêtre du genre 'QDialog' ?
Le 'QWidget' a quoi sert-il ?
Le 'QWidget' appartient à qui ? A la fenêtre principale ou à une autre fenêtre du genre 'QDialog' ?
Le 'QWidget' a quoi sert-il ?
Et bien, finalement, j'ai changer ! : j'ai remplacer mon QWidget par un QDialog, en me disant que j'allais connecter mon QDialog accepted() avec ma fenêtre principale mais, là non plus, j'y arrive pas.
Le 'QWidget' appartient à qui ?
Ben, justement, maintenant, j'ai changer, c'est un QDialog !!!!!
Le 'QWidget' a quoi sert-il ?
C'est un petit formulaire qui demande un nombre, (QDoubleSpinBox), et un nom (QLineEdit).
C'est une fenêtre. (QDialog)
Le 'QWidget' appartient à qui ?
Ben, justement, maintenant, j'ai changer, c'est un QDialog !!!!!
Le 'QWidget' a quoi sert-il ?
C'est un petit formulaire qui demande un nombre, (QDoubleSpinBox), et un nom (QLineEdit).
C'est une fenêtre. (QDialog)
En effet, un QDialog est la classe adapté à ce que tu veux faire.
Je peux t'expliquer la méthode que j'utilise et qui fonctionne mais qui n'est peut être pas la meilleure.
En premier lieu, tu crées une méthode dans ta classe que tu dérive de QDialog. Cette méthode aura pour but de retourner tes valeurs.
Ensuite, lorsque tu appelles ton dialogue, tu le fait avec la méthode QDialog::exec() et les lignes du dessous tu récupères le résultat.
Je peux t'expliquer la méthode que j'utilise et qui fonctionne mais qui n'est peut être pas la meilleure.
En premier lieu, tu crées une méthode dans ta classe que tu dérive de QDialog. Cette méthode aura pour but de retourner tes valeurs.
Ensuite, lorsque tu appelles ton dialogue, tu le fait avec la méthode QDialog::exec() et les lignes du dessous tu récupères le résultat.
WAHOU !?!?!? Attend... tu peut m'expliquer sa en détails s'il te plait ???? Merci !
En premier lieu, tu crées une méthode dans ta classe que tu dérive de QDialog. Cette méthode aura pour but de retourner tes valeurs.
Si j'ai bien compris, il faut que je créer u
En premier lieu, tu crées une méthode dans ta classe que tu dérive de QDialog. Cette méthode aura pour but de retourner tes valeurs.
Si j'ai bien compris, il faut que je créer u
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est une excellente méthode, en voici un exemple:
Bonne continuation.
// Dans le programme principal void MainWindow::btnDialog_clicked() { Dlg dlg (this); if (dlg.exec()) qDebug() << dlg.getSpinBox() << " - " << dlg.getLineEdit(); } // La classe à déclarer // Dlg.h #include <QtGui> class Dlg : public QDialog { Q_OBJECT public: DlgDivers(QWidget* parent=0); QString getLineEdit(void) { return (lineEdit->text()); } int getSpinBox(void) { return (spinBox->value()); } private: QLineEdit* lineEdit; QSpinBox* spinBox; QPushButton* btnAnnuler; QPushButton* btnOK; }; // Dlg.cpp #include "dlgDivers.h" DlgDivers::DlgDivers(QWidget* parent) : QDialog(parent) { setWindowTitle (trUtf8 ("Essai >>> Dialog <<<")); lineEdit = new QLineEdit; spinBox = new QSpinBox; btnAnnuler = new QPushButton("Annuler"); btnOK = new QPushButton("OK"); connect (btnAnnuler, SIGNAL(clicked()), this, SLOT(reject())); connect (btnOK , SIGNAL(clicked()), this, SLOT(accept())); QVBoxLayout* vLayout = new QVBoxLayout; vLayout->addWidget(lineEdit); vLayout->addWidget(spinBox); vLayout->addWidget(btnAnnuler); vLayout->addWidget(btnOK); setLayout(vLayout); }Ce n'est qu'un exemple, il reste donc à adapter.
Bonne continuation.
...un QString public et un double public aussi ??? (désolé pour les coupures, quand j'essaye d'envoyer, sa plante)
Du genre :
==========================Fichier dialog.h============================= %
Du genre :
==========================Fichier dialog.h============================= %
Désolé, sa plante !!!!!!!!!! A chaque fois, j'obtiens un message d'erreur !
avec un code du genre :
2677a.7776.jhh78. (c'est pas le bon, mais je ne m'en souvient plus !!)
avec un code du genre :
2677a.7776.jhh78. (c'est pas le bon, mais je ne m'en souvient plus !!)
Tu n'as pas à être désolé.
Donc ça plante à l'exécution... probablement un problème de pointeur...
Le plus simple est d'envoyer ton code A CONDITION QU'IL SOIT INDENTE, pour cela, il y a les balises à droite du 'souligné'.
Sinon, il faut que tu simplifies ton code ou bien que tu le suives par des 'printf' ou mieux par des 'qDebug', sinon il te reste encore le debugger.
Donc ça plante à l'exécution... probablement un problème de pointeur...
Le plus simple est d'envoyer ton code A CONDITION QU'IL SOIT INDENTE, pour cela, il y a les balises à droite du 'souligné'.
Sinon, il faut que tu simplifies ton code ou bien que tu le suives par des 'printf' ou mieux par des 'qDebug', sinon il te reste encore le debugger.
Je crois comprendre que c'est internet qui plante, pas le programme. (si ce n'est pas le cas, tu es effectivement pas clair du tout)
Ce que loupius a mis en public, ce sont des méthodes. Il faut bien mettre des choses en public, sinon la classe n'a pas d'intérêt.
Ce que loupius a mis en public, ce sont des méthodes. Il faut bien mettre des choses en public, sinon la classe n'a pas d'intérêt.
LOL, le problème n'est pas le programme, mais ce site internet (y faisait certainement une mise a jour !).
Par contre, (et là je parle du programme), quand je compile, il me dit :
erreur: invalid use of incomplete type ‘struct QDebug’
erreur: forward declaration of ‘struct QDebug’
attention : inline function ‘QDebug qDebug()’ used but never defined
Par contre, (et là je parle du programme), quand je compile, il me dit :
erreur: invalid use of incomplete type ‘struct QDebug’
erreur: forward declaration of ‘struct QDebug’
attention : inline function ‘QDebug qDebug()’ used but never defined