Partage
  • Partager sur Facebook
  • Partager sur Twitter

Utiliser les fonctions

    5 mai 2022 à 17:55:30

    Bonjour,

    Je reviens vers vous pour essayer de comprendre comment afficher les items d'un QComboBox dans une fenêtre de dialogue avec SIGNAL/SLOT.

    Voici mon fichier Tcombobox.h

    #ifndef TCOMBOBOX_H
    #define TCOMBOBOX_H
        #include <QApplication>
        #include <QWidget>
        #include <QDialog>
        #include <QStringList>
        #include <QList>
    
        namespace Ui { class TcomboBox; }
    
        class TcomboBox : public QDialog
        {
            Q_OBJECT
    
        public:
            explicit TcomboBox(QWidget *parent = nullptr);
            void AjouterItems();
    
    
            ~TcomboBox();
    
        private:
            Ui::TcomboBox *ui;
            QList<QString> *vListe;
        };
    
    #endif // TCOMBOBOX_H

    Voici mon fichier Tcombobox.cpp

    #include "tcombobox.h"
    #include "ui_tcombobox.h"
    
    TcomboBox::TcomboBox(QWidget *parent) : QDialog(parent),
    
        ui(new Ui::TcomboBox)
    {
        ui->setupUi(this);
    
        // Ajout d'Items 'en dur'
            ui->CboTravail->addItem("Session de travail");
            ui->CboTravail->addItem("Session de Restauration");
    
        // Ajout d'Items avec QList dans le constructeur
            QList<QString> LListe;
            int i;
            for (i = 2000; i < 2010; ++i)
            { LListe.append(QString::number(i) + '/' + QString::number(i+1)); };
            ui->CboList->addItems(LListe);
    
        // Ajout d'Items avec QList à partir d'une fonction
            ui->CboSession->showPopup();
    
        // Connection aux fonctions
    
            // Connection du Bouton "BtnQuitter"
            QObject::connect(ui->BtnQuitter,SIGNAL(clicked()),this,SLOT(close()));
    
            // Connection du ComboBox "CboSession"
            QObject::connect(ui->CboSession,SIGNAL(currentText()),this,SLOT(AjouterItems()));
    }
    
    void TcomboBox::AjouterItems()
    {   
        for (int i = 2000; i < 2010; ++i)
        {
            vListe->append(QString::number(i)+'/'+QString::number(i+1));//vListe est déclaré dans Tcombobox en private
        };
    }
    
    TcomboBox::~TcomboBox()
    { delete ui; }

    Mon problème est que le comboBox "CboSession" n'affiche rien.

    Et dans l'onglet "Application output" de l'IDE j'ai le message suivant :

        No such signal QComboBox::currentText() in ..\Bourse\bourse.cpp:30

    Ma question : Comment afficher les items de CboSession sur la forme en utilisant SIGNAL/SLOT qu’apparemment je ne maitrise pas.

    Merci pour m'aider à comprendre l'utilisation de "SIGNAL / SLOT".

    Bonne journée.

    -
    Edité par allaham 5 mai 2022 à 18:12:06

    • Partager sur Facebook
    • Partager sur Twitter
      5 mai 2022 à 18:26:29

      J'y connais rien en QT.

      Mais ton pointeur vListe, que tu utilises dans ta fonction membre TcomboBox::AjouterItems, il est initialisé où ?

      • Partager sur Facebook
      • Partager sur Twitter
        5 mai 2022 à 18:44:59

        Bonjour,

        Je débute en C++ et Qt.

        vListe est déclaré dans mon fichier Tcombobox.h à la ligne 24 :

        QList<QString> *vListe;// ligne 24 de Tcombobox.h

        Faut il l'initialisé ???

        J'ajoute cette ligne dans le constructeur :

        vListe = new QList<QString>;

        Et elle importante ? Je voudrais comprendre.

        Merci


        -
        Edité par allaham 5 mai 2022 à 18:52:04

        • Partager sur Facebook
        • Partager sur Twitter
          6 mai 2022 à 17:20:55

          Ca n'a aucun sens de faire un pointeur sur un QList.

          Et ce n'est pas un manque de connaissances sur Qt, c'est un manque de connaissances en C++. Et oui, il faut initialiser ses pointeurs (et plus généralement toutes les variables)

          • Partager sur Facebook
          • Partager sur Twitter
            6 mai 2022 à 23:20:37

            Bonjour,

            Pouvez vous me donner un exemple simple.

            Bonne soirée.

            • Partager sur Facebook
            • Partager sur Twitter
              6 mai 2022 à 23:39:51

              Initialisation des pointeurs et plus généralement des variables .

              Merci pour votre aide.

              • Partager sur Facebook
              • Partager sur Twitter
                6 mai 2022 à 23:42:25

                C'est dans n'importe quel cours de C++.
                • Partager sur Facebook
                • Partager sur Twitter

                Utiliser les fonctions

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                • Editeur
                • Markdown