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 :

Mise à jour d'un formulaire par sous-formulaire

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Par défaut Mise à jour d'un formulaire par sous-formulaire
    Bonjour,

    Voilà, je cherche à transcrire une appli VBA en .exe via Qt. Or, je débute totalement en C++/Qt (j'ai quand même quelques notions de php et VB).

    Pour faire simple, mon appli VBA affiche un formulaire (Form1) sur ce formulaire j'ai une textBox et un bouton qui affiche un sous-formulaire (Form2).

    Je cherche à ce que les données entrées dans Form2 s'affichent dans le textBox de Form1.

    C'est simple en VBA (il suffit d'appeler l'objet Form1), mais en C++/Qt je m'arrache les cheveux. Je n'arrive pas à voir les objets de Form1 depuis Form2...

    Si quelqu'un a une idée ou un exemple de code ça serait génial .

  2. #2
    Membre Expert

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

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    Si Form1 et Form2 sont membres de la même classe ou méthode, ils se voient. Ensuite il suffit de connecter le bon signal de Form2 pour envoyer le text-changed au bon slot de Form1.

    Après je pense qu'on s'improvise pas codeur Qt/C++ (surtout C++ mais grâce à Qt c'est moins dur), faut que tu prennes le temps d'étudier tout ça, y'a des tutoriels, une FAQ...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Par défaut
    Salut, et surtout merci de ta réponse !

    Voilà donc une piste : Form1 et Form2 doivent faire partie de la même classe... (chose que je n'avais pas envisagé...).

    Mais alors comment y arriver sous Qt ?

    Je créée les 2 formulaires, puis je crée une classe qui les rassemble ?
    Ou peut-on directement "fusionner" les 2 en une classe ?

  4. #4
    Membre Expert

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

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    Lorsque tu crées un projet graphique, tu as un formulaire qui est membre de la classe MainWindow (avec le pointeur ui). Là tu as deux formulaires, donc tu n'as qu'à rajouter un ui2 (enfin tu l'appelles comme tu veux) de la même façon (déclaration du namespace dans le .h, et inclusion de "ui_... .h" dans le .cpp).

    mainwindow.h
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
     
    #include <QMainWindow>
     
    namespace Ui {
        class Form1;
        class Form2;
    }
     
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
     
    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
     
    private:
        Ui::Form1 *ui1;
        Ui::Form2 *ui2;
    };
     
    #endif // MAINWINDOW_H

    mainwindow.cpp
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #include "mainwindow.h"
    #include "ui_form1.h"
    #include "ui_form2.h"
     
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui1(new Ui::Form1),
        ui2(new Ui::Form2)
    {
        ui1->setupUi(this);
        ui2->setupUi(this);
     
        // QObject::connect(ui2->textEdit, SIGNAL(textChanged(QString)), ui1->textBox, SLOT(setText(QString)));
    }
     
    MainWindow::~MainWindow()
    {
        delete ui1;
        delete ui2;
    }

    Voilà pour le principe.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Par défaut
    Aaaaaahhhh d'accord... c'est subtil le C++

    Bon je vais voir mais ça devrait le faire...

    (en fait si ça le fait pas je devrait pourvoir me debrouiller avec des groupbox à afficher/cacher, le tout sur le même formulaire )

    Merci !!

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

Discussions similaires

  1. Lier un sous-formulaire à un sous-formulaire
    Par bobosh dans le forum IHM
    Réponses: 2
    Dernier message: 02/03/2021, 11h45
  2. Réponses: 5
    Dernier message: 06/05/2015, 12h24
  3. Réponses: 2
    Dernier message: 04/01/2014, 11h25
  4. [2.x] Méthode de mise à jour d'une instance par un formulaire.
    Par Procyon dans le forum Symfony
    Réponses: 3
    Dernier message: 19/05/2013, 12h23
  5. Réponses: 2
    Dernier message: 16/07/2008, 20h02

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