C++ : Faire passer des infos entre un QWid...
Résolu/Fermé
duchnoki
Messages postés
158
Date d'inscription
dimanche 12 octobre 2008
Statut
Membre
Dernière intervention
30 novembre 2010
-
25 oct. 2009 à 17:49
duchnoki Messages postés 158 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 30 novembre 2010 - 26 oct. 2009 à 13:20
duchnoki Messages postés 158 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 30 novembre 2010 - 26 oct. 2009 à 13:20
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 ?
duchnoki
Messages postés
158
Date d'inscription
dimanche 12 octobre 2008
Statut
Membre
Dernière intervention
30 novembre 2010
4
26 oct. 2009 à 07:41
26 oct. 2009 à 07:41
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)
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
26 oct. 2009 à 08:38
26 oct. 2009 à 08:38
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.
duchnoki
Messages postés
158
Date d'inscription
dimanche 12 octobre 2008
Statut
Membre
Dernière intervention
30 novembre 2010
4
26 oct. 2009 à 11:30
26 oct. 2009 à 11:30
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.
duchnoki
Messages postés
158
Date d'inscription
dimanche 12 octobre 2008
Statut
Membre
Dernière intervention
30 novembre 2010
4
26 oct. 2009 à 11:54
26 oct. 2009 à 11:54
...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============================= %
duchnoki
Messages postés
158
Date d'inscription
dimanche 12 octobre 2008
Statut
Membre
Dernière intervention
30 novembre 2010
4
26 oct. 2009 à 12:23
26 oct. 2009 à 12:23
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.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
26 oct. 2009 à 12:44
26 oct. 2009 à 12:44
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.
duchnoki
Messages postés
158
Date d'inscription
dimanche 12 octobre 2008
Statut
Membre
Dernière intervention
30 novembre 2010
4
26 oct. 2009 à 13:04
26 oct. 2009 à 13:04
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
duchnoki
Messages postés
158
Date d'inscription
dimanche 12 octobre 2008
Statut
Membre
Dernière intervention
30 novembre 2010
4
26 oct. 2009 à 13:20
26 oct. 2009 à 13:20
C'est bon merci, j'ai modifier la ligne qDebug() << dlg.getSpinBox() << " - " << dlg.getLineEdit();
par QStringList donnes;
donnes << dlg.getSpinBox() << dlg.getLineEdit();
Et ça marche !!!!! Merci à tous !
par QStringList donnes;
donnes << dlg.getSpinBox() << dlg.getLineEdit();
Et ça marche !!!!! Merci à tous !