我將QScript添加到我的Qt應用程序中。我已經添加了元數據並使用一些元數據函數通過C++代碼進行查詢。這工作正常 - 我可以導航對象層次並打印出值(包括枚舉)。QtScript plus枚舉
但是,我不能看到在Qt腳本中使用枚舉。
我有我的課......
class HalPin : public QObject
{
Q_OBJECT
public:
enum EHalPinType
{
Bit = HAL_BIT,
Float = HAL_FLOAT,
S32 = HAL_S32,
U32 = HAL_U32
};
enum EHalPinDirection
{
In = HAL_IN,
Out = HAL_OUT,
IO = HAL_IO
};
Q_ENUMS(EHalPinType)
Q_ENUMS(EHalPinDirection)
public:
explicit HalPin(QObject *parent = 0);
signals:
public slots:
};
Q_DECLARE_METATYPE(HalPin::EHalPinType)
Q_DECLARE_METATYPE(HalPin::EHalPinDirection)
Q_DECLARE_METATYPE(HalPin*)
我有了,是以枚舉作爲參數的方法的另一類...
class EmcHal : public QObject
{
Q_OBJECT
public:
explicit EmcHal(QString moduleName, QObject *parent = 0);
signals:
public slots:
QObject *createHalPin(HalPin::EHalPinType, HalPin::EHalPinDirection, QString name);
};
這個類是在其他類暴露 - 對不起,我應該簡化這個例子。如果我寫了下面的JScript代碼,
var nextPagePin1 = Emc.hal.createHalPin();
我得到一個錯誤,我希望......
SyntaxError: too few arguments in call to createHalPin(); candidates are createHalPin(HalPin::EHalPinType,HalPin::EHalPinDirection,QString)
因此,看來該enum類型已知qtscript。
我正在努力做的是從jscript設置枚舉參數。我試過很多種組合...
Bit
EHalPinType.Bit
HalPin.EHalPinType.Bit
等等。
如果我嘗試使用整數,我得到...
TypeError: cannot call createHalPin(): argument 1 has unknown type `HalPin::EHalPinType' (register the type with qScriptRegisterMetaType())
這似乎意味着JScript不知道我的枚舉。
有什麼建議嗎?
我是否需要使用qRegisterMetaType或qScriptRegisterMetaType來訪問我的枚舉?該文件不建議我需要這樣做。我是否需要爲qScriptRegisterMetaType方法實現轉換器功能?
或者是我的語法只是錯誤的jscript?
有人有一個工作的例子嗎?
感謝, 弗蘭克