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 :

Organiser son code

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2018
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2018
    Messages : 136
    Par défaut Organiser son code
    Bonjour à tous,

    par avance, je m'excuse si mes questions sont un peu simplistes pour certains, mais étant débutant sur Qt et surtout dans le monde du C++, j'espère que vous serez tolérants.
    Bon je me lance, je suis en train de faire un petit programme en application (pas console), et sur mon IHM je commence à y mettre quelques éléments comme des boutons et autres.
    Le problème est que mon fichier "mainwindow.cpp" commence a grossir, et je voudrais le soulager en créant d'autres fichiers ou je pourrai mettre les fonctions. Cependant je voudrais que ces fonctions puissent avoir les mêmes droits ou vues (comme vous voulez) que si elles étaient dans ce fichier.

    Je m'explique, dans une fonction de clique de bouton par exemple, au lieu d'écrire mon code directement dans ce fichier et dans la fonction "clickBouton", je voudrais que dans la fonction "clickBouton", j'appelle une autre fonction qui serait dans un autre fichier. Mais je souhaiterai aussi, que dans cette fonction appelée, je puisse voir les autres éléments qui composent mon IHM "ui-> ..."

    Alors comment faire, je suppose qu'il faut faire des déclarations des nouvelles fonctions dans le fichier "mainwindow.h", mais où et comment.

    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Personne ne t'empêche de mettre une fonction par fichier. A partir du moment où le fichier a bien les include lui indiquant ce que sont les entités nécessaires, les fonctions compileront où qu'elles soient.
    Si les fonctions sont des fonctions membres de MainWindow, elle sont forcément déjà dans MainWindow.h.
    Si les fonctions sont des fonctions globales, il suffit de les déclarer dans MainWindow.h.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2018
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2018
    Messages : 136
    Par défaut
    Merci dalfab pour ta réponse, mais j'ai besoin d'un exemple concret :

    Dans mainwindow.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
     
    public:
        explicit MainWindow(QWidget *parent = nullptr);
        ~MainWindow();
     
    private slots:
        void on_ButtonRun_clicked();
     
    private:
        Ui::MainWindow *ui;
    };
    Dans mainwindow.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void MainWindow::on_ButtonRun_clicked()
    {
      // APPEL ICI D'UNE FONCTION DANS UN NOUVEAU FICHIER
      // MAIS CE FICHIER DOIT ETRE CAPABLE DE S'INTERFACER AVEC LES AUTRES ELEMENTS DE L'IHM (ui->...)
      nouvelleFonction();
    }
    Donc "nouvelleFonction" doit être déclarée comment dans "mainwindow.h" et dans mon nouveau fichier .cpp et .h ?

    Merci

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    toto.h doit avoir la déclaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void nouvelleFonction();
    Ensuite tout ces fichiers qui incluent toto.h pourront appeler la fonction nouvelleFonction, je ne comprends pas ce qui est bloquant.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2018
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2018
    Messages : 136
    Par défaut
    Je vois que je n'ai pas été très clair.

    Dans mon fichier "mainwindow.cpp", si j'ai créé un comboBox appelé ComboPortCom, je peux écrire "if ( ui->ComboPortCom->currentIndex()== 1 )", par exemple.
    Maintenant, je crée un nouveau fichier cpp et h, dans ma nouvelle fonction si je réécris la même ligne, le compilateur va me dire qu'il ne connait pas ui, ni ComboPortCom, etc ..

    Ma question est donc comment faire et déclarer les choses pour que cela devienne possible.

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Il ne s'agit pas de fonction quelconques.
    ui est un membre de ton objet, tu souhaites donc accéder à this->ui->membredeUi->fonction(). Le problème est donc l'accès au membre avant l'accès à la fonction. Sans artifices seules les fonctions membres de class MainWindow ont la possibilité de la faire. Il faut donc créer des fonctions membres dans class MainWindow, et ces fonctions membres pourront accéder à this->ui.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class MainWindow : public QMainWindow {
        ... ... ...
    private:
        Ui::MainWindow *ui;
        void nouvelleFonctionInterne(); // appelable de n'importe quelle fonction membre
    };
    // Dans mon fichier toto.cpp
    #include <MainWindow.h>
    void MainWindow::nouvelleFonctionInterne() {  // Fonction d'utilité "interne"
       if ( ui->ComboPortCom->currentIndex()== 1 ) ...
    }
    Si les fonctions n'ont besoin que d’accéder à ui, on peut avoir des fonctions globales qui recevront en paramètres le champ ui et le fichier les définissant devra à minima inclure la déclaration de Ui::MainWindow.

Discussions similaires

  1. [Débutant] Organiser son code pour une jointure entre 2 tables
    Par scude dans le forum ASP.NET MVC
    Réponses: 4
    Dernier message: 02/05/2012, 11h59
  2. Raccourci clavier organiser son code?
    Par bilou_12 dans le forum Général VBA
    Réponses: 1
    Dernier message: 30/04/2012, 17h04
  3. organiser son code en modules
    Par ilood dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/11/2008, 14h13
  4. organiser son code dans des pages ASP.NET
    Par Paul Van Walleghem dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/05/2008, 15h21

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