Bonjour
Je fais un IHM pour gérer une BDD de disques de musique. Dans la base, il y a une table stockant la liste des artistes. Dans le formulaire pour ajouter un disque à la base, je souhaite que l'utilisateur dispose d'une combo box avec la liste des artistes présents dans cette table, mais je veux aussi qu'il puisse y entrer une nouvelle valeur. Enfin, le tout doit être auto-complétant.
J'ai réussi à créer une telle combo box. Le problème est pour la récupération de la valeur choisie / entrée cette combo box.
Voici le code (adapté pour Dvpez) que j'ai utilisé pour créer la combo box :
Dans mon IHM, il y a un bouton "ajouter" et dans le slot associé au clic sur ce bouton, je souhaite récupérer la valeur de la combo box. Je souhaite récupérer le nom de l'artiste mais aussi L'INDEX DE CET ÉLÉMENT. Et là, je galère depuis hier. J'ai regardé les différentes valeurs possibles, mais rien ne va...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 // Combo box pour l'affichage de la liste champTest = new QComboBox; // Edition autorise champTest->setEditable(true); // Un champ vide pour entrer son texte champTest->insertItem(0,""); // Ajout d'autres artistes : champTest->insertItem(1,"Metallica"); champTest->insertItem(2,"Guns");
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 qDebug() << "Index courant :" << champTest->currentIndex(); qDebug() << "Texte correspondant :" << champTest->itemText( champTest->currentIndex() ); qDebug() << "Texte du 'line edit' :" << champTest->lineEdit()->text();
Le problème est assez compliqué, il y a plusieurs cas :
- Si dans mon champ vide, je tape par exemple "AC/DC", je clique sur mon bouton et je regarde mon debug :
- J'ai bien un index courant à 0.
- Les deux textes à "AC/DC".
Dans ce cas, pas de problème dans ce cas.
- Si dans mon champ vide, je tape "Gu", ça auto-complète à Guns, je clique sur mon bouton et je regarde mon debug :
- L'index est à 2.
- Les deux textes sont à "Guns".
Dans ce cas, tout va bien aussi.
- Et là, ça se gâte... Je tape "Gu" et j'ai le résultat décrit au point 2. Je continue à écrire dans mon champ et à la suite de "Guns', je rajoute "N Roses", et je clique.
- L'index est à 2.
- Le texte correspond est à "Guns".
- Le texte édité est à "Guns N Roses".
Problème : je voudrais que l'index soit à 0 !!!!
J'ai essayé de faire un "champTest->setCurrentIndex(0);" mais le champ redevient vide...
Je suis preneur de toute idée pour arranger la chose !! Merci !!!!
Partager