J'ai besoin d'obtenir un Je ne trouve pas de est ce vraiment em> ma seule option: p> qstringlist code> ou un tableau contenant tous les
qstring code> s dans un
qcombobox code>.
qcombobox code> méthode qui, en fait, je ne peux même pas trouver une méthode code> qabstractTemModel code> qui fait cela. p>
3 Réponses :
Ne faites pas d'optimisation prématurée. Votre code est ok. Vous pouvez utiliser En outre, vous pouvez implémenter votre propre QabstractTemModel qui stockera des données comme QStringList et lui donnera un accès. P> qobject_cast
Cependant, il existe une classe qabstractTemmodel code> peut contenir des images, des arbres d'autres types de données pouvant être conservées dans
qvariant code>. C'est pourquoi vous ne pouvez pas obtenir un
qstringlist code> de celui-ci. C'est inutile.
qstringlistmodel code> héritée de
qabstractitemmodel code> qui est destiné à garder les chaînes. Et comme vous pouvez vous attendre à ce que la méthode
stringlist () code>. P>
qcombobox code> vous permet de modifier un modèle par défaut qu'il utilise sur un autre. Par défaut, il utilise
qstandarditemmodel code>. Changez-le à un modèle de liste de chaînes après avoir créé la liste déroulante. P>
QStringList list = cbModel->stringList();
Ce n'est pas la solution que j'espérais, mais elle résout légitimement le problème.
Votre réponse a l'air bien, mais vous pouvez également utiliser une QStringList au lieu d'un vecteur.
QStringList itemsInComboBox; for (int index = 0; index < ui->combo_box->count(); index++) itemsInComboBox << ui->combo_box->itemText(index);
Il n'y a pas de cette fonction, Afak. Pourquoi n'aimez-vous pas l'approche que vous utilisez (itération sur tous les articles de la liste déroulante)?
@vahancho, je suppose qu'il soit assez gaspillé, d'autant plus que la taille du
qcombobox code> augmente.
Mais peut-être stocker le contenu de la liste déroulante dans un autre conteneur est également gaspillé? Pourquoi as-tu besoin de cela? Cela peut expliquer, pourquoi il n'y a pas de telle fonction dans l'API.
Qu'est-ce que le conteneur de valeurs vous obtient que la fonction membre
qcombobox :: itemtext code> ne peut pas?
Je vais effacer
qcombobox code> et le peupler, j'ai besoin d'identifier des éléments qui ont changé.