ComboBox en C++ avec Qt
Zyo1
Messages postés
83
Date d'inscription
Statut
Membre
Dernière intervention
-
Zyo1 Messages postés 83 Date d'inscription Statut Membre Dernière intervention -
Zyo1 Messages postés 83 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Qt platform plugin download
- Microsoft store download - Guide
- Télécharger music mp3 gratuit download pc - Télécharger - Conversion & Extraction
- Canva download - Télécharger - Divers Photo & Graphisme
- Word 2013 free download - Télécharger - Traitement de texte
- Direct download - Accueil - Outils
2 réponses
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.
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.
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..
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..