使用Qt Quick 2.0,QT 5,一个(生成的)充满枚举的类将在GUI中使用 . class 已正确注册 . 不能直接在QML代码中使用枚举项,例如在 console.log
或 switch
... case
中,它们总是评估为 undefined
. 将枚举分配给 property int
DOES工作,并给出预期值 . 为什么?如何直接使用枚举,而不将所有这些(数百个)复制到属性?
guiids.h:
#include <QObject>
class GuiIDs : public QObject
{
Q_OBJECT
// ...
Q_ENUMS(Element_ALARMSTATUS_t)
// ...
public:
// ...
enum Element_ALARMSTATUS_t {
status_ALARMSTATUS_HIDDEN,
status_ALARMSTATUS_NOALARM,
status_ALARMSTATUS_INFO,
status_ALARMSTATUS_ALARM,
status_ALARMSTATUS_ACKNOWLEDGED,
status_ALARMSTATUS_PAUSED,
element_ALARMSTATUS_COUNT
};
// ...
};
test.qml:
import QtQuick 2.0
import bla.bla.bla.guiids 1.0
Rectangle {
// ...
Rectangle {
x: 0
y: 0
width: 100
height: 100
color: "red"
MouseArea {
anchors.fill: parent
property int foo: GuiIDs.element_ALARMSTATUS_COUNT
onClicked: {
// ...
console.log("foo=",foo);
console.log("GuiIDs.element_ALARMSTATUS_COUNT=",GuiIDs.element_ALARMSTATUS_COUNT)
}
}
}
}
单击红色矩形后记录输出:
qml: foo= 6
qml: GuiIDs.element_ALARMSTATUS_COUNT= undefined
1 回答
将
enum
封装到QObject
中,就像我一样 - 例如我的代码:然后注册类型 - 我的代码示例:
并在
QML
侧使用它 .