Partage
  • Partager sur Facebook
  • Partager sur Twitter

Afficher le contenu d'un Combox dans une forme

Sujet résolu
    4 mai 2022 à 18:29:48

    Bonjour,

    Voila mon problème :

    j'ai 2 ComboBox : "CboTravail" et "CboSession" dans une fenêtre de dialogue de type "QDialog".

    1- "CboTravail" contient 2 Items ("Session de travail" et "Session de Restauration"), l'ajout se fait comme suit

    ui->CboTravail->addItem("Session de travail") etui->CboTravail->addItem("Session de Restauration") dans le constructeur.

    2- "CboSession" peut contenir plusieurs Items et augmenter chaque année. Les Items sont du type ('2018/2019', '2019/2020', '2020/2021',..)

         Dans une boucle je construis chaque Item et je l’insert dans une variable que j'appelle 'Session'. Cette liste d'Items est ajoutée au combobox "CboSession" a travers une fonction "voidCombSession(QStringListSession)".

    Voici le fichier Bourse.h

    #ifndef BOURSE_H
    #define BOURSE_H
        #include <QApplication>
        #include <QWidget>
        #include <QDialog>
        #include <QStringList>
    
        namespace Ui {
        class Bourse;
        }
    
        class Bourse : public QDialog
        {
            Q_OBJECT
    
        public:
            explicit Bourse(QWidget *parent = nullptr);
    
            void CombSession(QStringList Session);
    
            ~Bourse();
    
        private:
            Ui::Bourse *ui;
            QStringList *Session;
        };
    
    #endif // BOURSE_H

    Voici le fichier Bourse.cpp

    #include "bourse.h"
    #include "ui_bourse.h"
    
    Bourse::Bourse(QWidget *parent) :
        QDialog(parent),
        ui(new Ui::Bourse)
    {
        ui->setupUi(this);
    
        ui->CboTravail->addItem("Session de travail");
        ui->CboTravail->addItem("Session de Restauration");
    
       QObject::connect(ui->CboSession,SIGNAL(currentText()),this,SLOT(CombSession(QStringList Session)));// c'est la ligne 17
    }
    
    void Bourse::CombSession(QStringList Session)
    {
       Session.clear();
       Session = {"Item1", "Item2", "Item3"};
       ui->CboSession->addItems(Session);
    
    }
    
    Bourse::~Bourse()
    {
        delete ui;
    }

    Mon problème est que le comboBox "CboSession" n'affiche rien et dans l'onglet "Application output" j'ai le message suivant :

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

    Je n'arrive pas à trouver un bout de solution.

    Merci pour votre aide.

    Re Bonjour,

    Je reviens vers vous pour essayer de comprendre comment afficher un QComboBox dans une fenêtre de dialogue avec de nouveaux fichiers.

    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" j'ai le message suivant :

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

    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 à 16:38:53

    • Partager sur Facebook
    • Partager sur Twitter

    Afficher le contenu d'un Combox dans une forme

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