J'ajoute QScript à mon application Qt. J'ai déjà ajouté des métadonnées et utilisé certaines des fonctions de métadonnées pour interroger le code C++. Cela fonctionne bien - je peux naviguer dans la hiérarchie des objets et imprimer les valeurs (y compris les enums). Mais, je n'arrive pas à voir des enums travailler dans le script Qt.QtScript plus enums
J'ai ma classe ...
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*)
J'ai une autre classe qui a une méthode qui prend les énumérations comme arguments ...
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);
};
Cette classe est exposée dans une autre classe - désolé, j'aurais dû simplifier l'exemple. Si j'écris le code JScript suivant,
var nextPagePin1 = Emc.hal.createHalPin();
je reçois une erreur je pense ...
SyntaxError: too few arguments in call to createHalPin(); candidates are createHalPin(HalPin::EHalPinType,HalPin::EHalPinDirection,QString)
Ainsi, il semble que les types de ENUM sont connus pour QtScript.
Ce que j'ai du mal à faire est de définir les arguments enum de jscript. J'ai essayé beaucoup de combinaisons ...
Bit
EHalPinType.Bit
HalPin.EHalPinType.Bit
et beaucoup plus.
Si je tente d'utiliser des entiers, je reçois ...
TypeError: cannot call createHalPin(): argument 1 has unknown type `HalPin::EHalPinType' (register the type with qScriptRegisterMetaType())
qui semble impliquer JScript ne connaît pas mes énumérations.
Des suggestions? Dois-je utiliser qRegisterMetaType ou qScriptRegisterMetaType pour accéder à mes énumérations? La documentation ne suggère pas que je doive faire cela. Ai-je besoin d'implémenter les fonctions de conversion pour la méthode qScriptRegisterMetaType.
Ou est ma syntaxe juste faux pour le jscript?
Est-ce que quelqu'un a un exemple de travail?
Merci, Frank