普通的类的枚举 是可以在QML中使用的,带有命名空间的没有试过,或者也是可以的
类似
#include <QtCore>
class DeviceModel: public QObject {
Q_OBJECT
Q_ENUMS(DeviceModelEnum)
public:
enum DeviceModelEnum {
Z10 = 1, Q10 = 2, Q5 = 3
};
};
加载qml的地方
#include <devicemodel.hpp>
qmlRegisterType<DeviceModel>("ekkes_enums", 1, 0, "DeviceModel");
qml中:
import ekkes_enums 1.0
Page {
Container {
DropDown {
Option {
text: "Z10"
value: DeviceModel.Z10
}
Option {
text: "Q10"
value: DeviceModel.Q10
}
Option {
text: "Q5"
value: DeviceModel.Q5
}
onSelectedIndexChanged: {
deviceLabel.deviceModel = selectedValue
}
}
Label {
text: "Hello ENUM"
textStyle.base: SystemDefaults.TextStyles.BigText
}
Label {
text: "please select from DropDown"
textStyle.base: SystemDefaults.TextStyles.SmallText
}
Label {
id: deviceLabel
property int deviceModel
onDeviceModelChanged: {
switch (deviceModel){
case DeviceModel.Z10:
text = "Touch Device"
break
case DeviceModel.Q10:
case DeviceModel.Q5:
text = "Keyboard Device"
break
default:
text = "unknown"
}
}
}
}
onCreationCompleted: {
console.debug("Enum value "+ DeviceModel.Q10)
deviceLabel.deviceModel = -1
}
}