ComboBox en C++ avec Qt

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. 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
    1. 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