hai veramente bisogno di scriverlo nel modo seguente:
QComboBox* combo = new QComboBox();
combo->addItem("True", "True");
combo->addItem("False", "False");
combo->setCurrentIndex(combo->findData("False"));
Il problema nell'implementazione era che non hai impostato le voci userData, ma solo testo. Nello stesso tempo hai cercato di trovare l'articolo con il suo userData che era vuoto. Con la specifica implementazione, utilizzo semplicemente il secondo argomento della funzione QComboBox::addItem(const QString &text, const QVariant &userData = QVariant()))
che imposta l'elemento utente (QVariant
).
UPDATE:
Il modo alternativo per trovare l'elemento casella combinata è l'impostazione del ruolo specifico come secondo argomento per QComboBox::findData()
funzione. Se non si desidera impostare in modo esplicito i dati dell'utente, è possibile fare riferimento agli elementi testi con Qt::DisplayRole
la bandiera, vale a dire:
QComboBox* combo = new QComboBox();
combo->addItem("True");
combo->addItem("False");
combo->setCurrentIndex(combo->findData("False", Qt::DisplayRole)); // <- refers to the item text
UPDATE 2:
Un'altra alternativa potrebbe essere utilizzando la ricerca basata su testo funzione QComboBox::findText()
:
QComboBox* combo = new QComboBox();
combo->addItem("True");
combo->addItem("False");
combo->setCurrentIndex(combo->findText("False"));
Perché?! Qual è il significato di 2 argomenti uguali ?? –
@KarenTsirunyan, ho aggiornato la mia risposta con maggiori dettagli. – vahancho
Vedo. Ma in questo caso penso che sia confuso che se ho solo dei testi e non ho bisogno di dati, devo impostare anche i dati quando aggiungo nuovi elementi. Penso che DEVE essere il modo più semplice per impostare selezionato, il testo che ho. –