Использование перечисления С++ в QML в виде строкиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Использование перечисления С++ в QML в виде строки

Сообщение Anonymous »

Я хотел бы использовать приведенное ниже перечисление в C++:

Код: Выделить всё

class MyClass : public QQuickItem {
Q_OBJECT
Q_PROPERTY(MyEnum enumValue READ getEnumValue)

public:
enum MyEnum{
MyEnumElement = 0
};
Q_ENUM(MyEnum)

slots:
MyEnum getEnumValue(){
return enumValue;
}

private:
MyEnum enumValue = MyEnumElement;
};
Так в QML:

Код: Выделить всё

MyClass {
id: myClass
}

Text {
text: "enumValue is: " + myClass.enumValue
}
Это приведет к тому, что enumValue будет MyEnumElement вместо enumValue, равным 0, как сейчас. Решение, которое у меня есть сейчас, является следующим, хотя и неэлегантным:

Код: Выделить всё

class MyClass : public QQuickItem {
Q_OBJECT
Q_PROPERTY(MyEnum enumValue READ getEnumValue)

public:
enum MyEnum{
MyEnumElement = 0
};
Q_ENUM(MyEnum)
QMetaEnum MyEnum_MetaEnum = QMetaEnum::fromType();
Q_INVOKABLE QString getEnumString(MyEnum enumVal){
return MyEnum_MetaEnum.valueToKey(enumVal);
}

slots:
MyEnum getEnumValue(){
return enumValue;
}

private:
MyEnum enumValue = MyEnumElement;
};
И:

Код: Выделить всё

MyClass {
id: myClass
}

Text {
text: "enumValue is: " + myClass.getEnumString(myClass.enumValue)
}
Есть ли лучший способ сделать это?

Подробнее здесь: https://stackoverflow.com/questions/376 ... -as-string
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»