Conjunto de elemento seleccionado para QComboBox

Tengo una simple QComboBox widget, que tiene 2 valores interior: True y False.
Y tengo un QString variable currValue, que es uno de esos valores. Quiero establecer mi widget del valor actual con currValue.

Pensé que la solución es la siguiente:
en primer lugar vamos a inicializar currValue;
QString currValue = "False";

QComboBox* combo = new QComboBox();
combo->addItem("True");
combo->addItem("False");
combo->setCurrentIndex(combo->findData(currValue));

Pero no funciona.
Estoy haciendo algo mal ?
Y por Qué QComboBox no tiene ningún miembro setCurrentItem() o algo como eso ?

OriginalEl autor Karen Tsirunyan | 2013-10-17

2 Kommentare

  1. 25

    Usted realmente necesita para escribir de la siguiente manera:

    QComboBox* combo = new QComboBox();
    combo->addItem("True", "True");
    combo->addItem("False", "False");
    combo->setCurrentIndex(combo->findData("False"));

    El problema en su implementación fue, que no establezca los elementos’ userData, pero sólo texto. En el mismo tiempo se trató de encontrar elemento por su userData que estaba vacío.
    Con la aplicación, sólo tiene que utilizar el segundo argumento de QComboBox::addItem(const QString &text, const QVariant &userData = QVariant())) función que establece el artículo userData (QVariant).

    ACTUALIZACIÓN:

    La alternativa para encontrar el cuadro combinado elemento es la configuración de la función específica como el segundo argumento para QComboBox::findData() función. Si no desea establecer explícitamente los datos de usuario, puede hacer referencia a los elementos de los textos con Qt::DisplayRole bandera, es decir:

    QComboBox* combo = new QComboBox();
    combo->addItem("True");
    combo->addItem("False");
    combo->setCurrentIndex(combo->findData("False", Qt::DisplayRole)); //<- refers to the item text

    ACTUALIZACIÓN 2:

    Otra alternativa podría ser el uso de texto basado función de búsqueda QComboBox::findText():

    QComboBox* combo = new QComboBox();
    combo->addItem("True");
    combo->addItem("False");
    combo->setCurrentIndex(combo->findText("False"));
    Por qué ?! ¿Cuál es el significado de 2 igual argumentos ??
    He actualizado mi respuesta con más detalles.
    Lo que yo veo. Pero En este caso creo que es confuso que si acabo de textos y no necesito de datos, tengo que definir también los datos al añadir nuevos elementos. Creo que DEBE haber una forma más fácil de definir seleccionada, el texto que tengo.
    bueno, si usted no desea que los datos de usuario, puede hacer referencia a los elementos de cuadro combinado’ textos. Ver otra actualización de mi respuesta.
    Yo entiendo que ustedes sugieren soluciones reales, pero como Usted puede ver, hay un poco extraño, como yo quiero encontrar el texto, pero yo trabajo con datos. Me acabo de enterar de que QComboBox también ha findText() método, que es lo que yo quería. 🙂

    OriginalEl autor vahancho

  2. 4

    Tengo la respuesta a mi propia pregunta.

    combo->setCurrentIndex(combo->findText(currValue));

    OriginalEl autor Karen Tsirunyan

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea