Bonjour,
j'ai un petit soucis sur l'utilisation conjointe de QFlags et QMetatype. J'ai peut être juste loupé une petite étape ou une erreur qui ne me saute pas aux yeux pour l'instant.
Donc imaginons que j'ai une énumération dans un namespace que j'instrumentalise en QFlags et que j'aimerais aussi instrumentaliser en QMetaType pour en bénéficier dans les QVariant :
maintenant, imaginons que j'utilise cela dans un QComboBox dont la méthode addItem prend justement en second argument un QVariant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 namespace datatype { enum DataType { UNDEFINED = 0x1, TYPE1 = 0x2, TYPE2 = 0x4 }; Q_DECLARE_FLAGS(DataTypes, DataType) } Q_DECLARE_METATYPE(datatype::DataType) Q_DECLARE_METATYPE(datatype::DataTypes) Q_DECLARE_OPERATORS_FOR_FLAGS(datatype::DataTypes)
Je récupère maintenant lors d'un changement de valeur (currentIndexChanged(int)) le QVariant correspondant de la manière suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ui->typeComboBox->addItem("Type du paramètre", datatype::UNDEFINED); ui->typeComboBox->addItem("Type1", datatype::TYPE1); ui->typeComboBox->addItem("Type2", datatype::TYPE2);
Malheureusement, je n'obtiens pas la bonne valeur mais uniquement 0.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 datatype::DataTypes datatype = ui->typeComboBox->itemData(index).value<datatype::DataTypes>();
Je peux obtenir la valeur sans instrumentaliser l'énumération avec QMetaType en faisant
mais j'aimerais tout de même savoir pourquoi la méthode avec QMetaType ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part datatype::DataTypes datatype = static_cast<datatype::DataTypes>(ui->typeComboBox->itemData(index).value<int>());
Merci d'avance
Partager