ComboBox en C++ avec Qt

Fermé
Zyo1 Messages postés 83 Date d'inscription vendredi 22 juin 2012 Statut Membre Dernière intervention 24 juillet 2015 - Modifié par Zyo1 le 15/07/2013 à 22:03
Zyo1 Messages postés 83 Date d'inscription vendredi 22 juin 2012 Statut Membre Dernière intervention 24 juillet 2015 - 19 juil. 2013 à 16:43
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

scinarf Messages postés 1098 Date d'inscription samedi 18 novembre 2006 Statut Membre Dernière intervention 25 septembre 2014 252
18 juil. 2013 à 14:35
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
Zyo1 Messages postés 83 Date d'inscription vendredi 22 juin 2012 Statut Membre Dernière intervention 24 juillet 2015
Modifié par Zyo1 le 19/07/2013 à 16:44
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