101 votes

Comment puis-je obtenir la VALEUR sélectionnée d'un QCombobox?

En Qt, je peux obtenir le texte sélectionné d'un QComboBox en utilisant la méthode combobox->currentText(). Comment puis-je obtenir la valeur sélectionnée?

J'ai cherché de l'aide mais je n'ai pas pu trouver de méthode currentData() que j'espérais trouver. Je n'ai pu trouver que combobox->currentIndex()

Y a-t-il un moyen plus intelligent de le faire autre que combobox->itemData(combobox->currentIndex())?

Mise à jour : Ce n'est plus nécessaire à partir de Qt 5. Une méthode currentData() a été ajoutée http://doc.qt.io/qt-5/qcombobox.html#currentData-prop

104voto

Patrice Bernassola Points 7422

Il semble que vous ayez besoin de faire combobox->itemData(combobox->currentIndex()) si vous voulez obtenir les données actuelles du QComboBox.

Si vous utilisez votre propre classe dérivée de QComboBox, vous pouvez ajouter une fonction currentData().

29voto

user1687981 Points 245

Celui-ci peut obtenir le texte de l'index actuel :

QString cb = cbChoice ->currentText();

24voto

ufukgun Points 2426

Vous pouvez définir des données QVariant pour tous les éléments, puis vous pouvez obtenir la valeur lorsque vous en avez besoin.

il y a un exemple de code pour cette situation :

ui.comboBoxSheetSize->addItem("128 m", QVariant(128));
ui.comboBoxSheetSize->addItem("256 m", QVariant(256));
ui.comboBoxSheetSize->addItem("512 m", QVariant(512));
ui.comboBoxSheetSize->addItem("1024 m", QVariant(1024));

...

void Page::onComboSheetSizeChanged( int index )
{
 int value = ui.comboBoxSheetSize->itemData(index).toInt();
}

au fait, je pense avoir mal compris votre question. je trouve que la façon dont vous obtenez les données est assez intelligente ?

11voto

joaerl Points 153

La fonction membre QComboBox::currentData a été ajoutée depuis que cette question a été posée, consultez ce commit

8voto

jatinkumar patel Points 2574

J'avais le même problème

Je l'ai résolu en

valeur = self.comboBox.currentText() 
print valeur

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X