ComboBox en C++ avec Qt

Zyo1 Messages postés 95 Statut Membre -  
Zyo1 Messages postés 95 Statut Membre -
Bonjour,

Je suis débutant en C++ avec Qt, et je n'arrive pas à récupérer la valeur cliquée dans une QComboBox (liste déroulante), afin de réaliser des actions en fonction de la valeur

Pouvez vous m'aider svp?
Un exemple de code serait l'idéal

2 réponses

  1. scinarf Messages postés 1183 Statut Membre 294
     
    Bonjour,

    Pour cela :

    on définit une QCombobox *maCombobox = new QCombobox(this);
    pour récupérer la valeur on utiliser les méthodes :
    QVariant val = maCombobox ->itemData(maCombobox ->currentIndex()) ;
    val.toDouble() pour en récupérer la valeur en double ou utiliser une autre méthode pour un autre type.

    Et pour faire une action à chaque changement de valeur il suffit d'utiliser la macro connect() de QObject.
    2
  2. Zyo1 Messages postés 95 Statut Membre
     
    Merci de ta réponse,

    Pour mon cas, je souhaite (pour tester) que lorsque je clique sur un élément de la comboBox celui-ci s'ajoute dans la comboBox en question.

    J'ai donc le fichier Fenetre.cpp (j'ai enlevé les imports) :

    Fenetre::Fenetre() : QWidget()
    {
    setFixedSize(750, 600);

    // Construction du bouton
    liste = new QComboBox(this);
    liste2 = new QComboBox(this);
    init();
    }

    void Fenetre::init(){
    liste->setCursor(Qt::PointingHandCursor);
    liste->setFont(QFont("Arial", 10));
    liste->setGeometry(250, 100, 280, 28);
    liste->addItem("A");

    liste2->setCursor(Qt::PointingHandCursor);
    liste2->setFont(QFont("Arial", 10));
    liste2->setGeometry(250, 280, 200, 28);
    liste2->addItem("1");

    QObject::connect(liste2, SIGNAL(currentIndexChanged(QString)), qApp, SLOT(dit(QString)));

    }

    void Fenetre::dit(int d){
    QVariant val = liste2 ->itemData(liste2 ->currentIndex()) ;
    liste2->addItem(val.toDouble());
    }

    Et celui main.cpp :

    int main(int argc, char *argv[])
    {
    QApplication app(argc, argv);

    Fenetre fenetre;
    fenetre.show();

    return app.exec();
    }

    J'ai donc fait ceci, mais il me refuse liste2->addItem(val.toDouble()); à la compilation, avec l'erreur : no matching function for call 'QcomboBox::add(item(double);'

    Pourtant j'utilise la méthode de la classe QComboBox..
    0