我将在Qt c ++前端,QML以及没有Qt库的c ++后端中使用相当大量的枚举。
我提出了两种方法来实现这一点,两者都是运行时。有趣的是为两个解决方案生成的moc文件是相同的。如果单独的MOC文件不够,QML引擎用于查找其QT_ENUM的是什么?
因此我制作了一个包含这些枚举的头文件,并包含文件" inline"确保它是课程的一部分。这样可行,但缺少QML中的自动完成功能(需要使用alt-tab返回和转发以及松散效率)
#include <QObject>
class ButtonEnums : public QObject
{
Q_OBJECT
public:
ButtonEnums(QObject* parent = nullptr);
#include "backend/app/messages_frontend.h"
Q_ENUM(EnTaskSelection)
};
现在我必须记住复制粘贴并获得一个更大的头文件然后如果我这样做,但在QML中自动完成工作:
#include <QObject>
class ButtonEnums : public QObject
{
Q_OBJECT
public:
ButtonEnums(QObject* parent = nullptr);
enum EnTaskSelection {
TASK_ONE = 0, //Strict indexes defined by main menu
TASK_TWO,
TASK_THREE,
TASK_FOUR
};
Q_ENUM(EnTaskSelection)
};