Я зарегистрировал тип перечисления «ClefType» в моем файле заголовка - это перечисление зарегистрировано в системе MetaObject с использованием макросов Q_DECLARE_METATYPE и Q_ENUMS. qRegisterMetaType также вызывается в конструкторе класса.Доступ к перечислению, хранящемуся в QVariant
Это позволяет мне использовать этот тип в Q_PROPERTY, все это прекрасно работает. Однако позже я должен уметь получить Q_PROPERTY этого типа перечисления, учитывая, что объект - в форме, подходящей для сериализации.
В идеале, было бы полезно, чтобы сохранить целое значение для этого элемента перечисления, потому что я не хочу, чтобы это быть специфическими для типа перечисления, который используется - в конце концов, я хочу иметь несколько различных перечислений.
// This is inside a loop over all the properties on a given object
QMetaProperty property = metaObject->property(propertyId);
QString propertyName = propertyMeta.name();
QVariant variantValue = propertyMeta.read(serializeObject);
// If, internally, this QVariant is of type 'ClefType',
// how do I pull out the integer value for this enum?
variantValue.toInt();
К сожалению, не работает - пользовательские перечисления не кажется непосредственно «колдовать» до целого значения.
Спасибо заранее,
Генри
Это отлично работает - большое спасибо за ваш ответ в глубину! Очень признателен –