Adicione QObject na caixa combinada de QT
Pergunta
Eu tenho uma aula personalizada que criei, digamos myclass. Agora, como adicionar uma referência à referência do MyClass como segundo parâmetro na caixa de combinação abaixo:
this-> ui-> ComboBox-> additem ("item-1",);
O objetivo é que, quando o item alterado é disparado, quero obter essa instância de classe específica de MyClass e processar de acordo.
Solução
Primeiro você precisa usar Q_DECLARE_METATYPE(MyClass*)
, para que o tipo possa ser usado em QVariant
. Então você pode adicionar o item como este:
this->ui->comboBox->addItem("item-1", QVariant::fromValue(myClass));
E recupere:
this->ui->combobox->itemData(x).value<MyClass*>();
Outras dicas
A resposta acima da sintaxe está ligeiramente incorreta,
Use Q_DECLARE_METATYPE (MyClass*), no arquivo de cabeçalho MyClass, para que o tipo possa ser usado no QVariant.
Adicione o item como este:
this-> ui-> ComboBox-> addItem ("item-1", qVariant :: FromValue (myClass));
E recupere: this-> ui-> ComboBox-> itemData (x) .Value ();