C++ : Faire passer des infos entre un QWid... [Résolu] - C++

C++ : Faire passer des infos entre un QWid... PHP:comment faire passer des infos via url ? (Résolu) » Forum - PHP Où sont passés les infos sur les barres ? » Forum - Windows J'ai un Mac Mini j'ai acheté un Imac, comment passer les infos ? » Forum - MacOS Infos sur la bande passante (Résolu) » Forum - Internet / Réseaux sociaux Mes infos sur facebook au passé (Résolu) » Forum - Facebook

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 !

Forum

C++ : Faire passer des infos entre un QWid... PHP:comment faire passer des infos via url ? (Résolu) » Forum - PHP Où sont passés les infos sur les barres ? » Forum - Windows J'ai un Mac Mini j'ai acheté un Imac, comment passer les infos ? » Forum - MacOS Infos sur la bande passante (Résolu) » Forum - Internet / Réseaux sociaux Mes infos sur facebook au passé (Résolu) » Forum - Facebook

Web: www.shapebootstrap.net

14 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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 ?

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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)

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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.

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

C'est une excellente méthode, en voici un exemple:

  // 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.

Reply
réponses:
  • auteur

    Il faut remplacer les DlgDivers par Dlg.

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

...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============================= %

Reply
réponses:
  • auteur

    Sois plus explicite, je ne comprends pas.

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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 !!)

Reply
réponses:
  • auteur

    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.

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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.

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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

Reply
réponses:
  • auteur

    Il ne faut pas oublier:
    #include <QtDebug>
    Il faut consulter la doc !

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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 !

Reply

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed