Añadir QObject en el cuadro combinado de Qt
Pregunta
Tengo una clase personalizada que he creado, por ejemplo MiClase. Ahora, ¿cómo añadir una referencia a la referencia de MiClase como segundo parámetro en el cuadro combinado a continuación:
this-> ui-> comboBox-> addItem ( "elemento-1",);
El propósito es que cuando se dispara elemento cambiado aún, quiero conseguir esa instancia clase específica de MiClase y el proceso en consecuencia.
Solución
En primer lugar es necesario utilizar Q_DECLARE_METATYPE(MyClass*)
, por lo que el tipo puede ser utilizado en QVariant
. A continuación, puede añadir el artículo siguiente:
this->ui->comboBox->addItem("item-1", QVariant::fromValue(myClass));
Y recuperarlo:
this->ui->combobox->itemData(x).value<MyClass*>();
Otros consejos
sintaxis respuesta anterior es ligeramente incorrecto,
El uso Q_DECLARE_METATYPE (MyClass *), en el archivo de cabecera MiClase, por lo que el tipo se puede utilizar en QVariant.
añadir el artículo siguiente:
this-> ui-> comboBox-> addItem ( "elemento-1", QVariant :: fromValue (myClass));
Y recuperarlo: this-> ui-> combobox-> itemData (x) .value ();