Accéder à un slot depuis un script
Bonjour,
Je souhaite scripter une application.
L'application est simplement une mémoire accessible en lecture/écriture encapsuler dans une classe dérivée QObject .
Soit :
Code:
1 2 3 4 5 6 7
| class QMemory : public QObject
{
Q_OBJECT
Q_INVOKABLE int read(qint32 addr, qint32 & val) ;
Q_INVOKABLE int write(qint32 addr, qint32 & val) ;
} |
Je place à disposition du script ma mémoire instanciée comme indiqué dans la doc Qt "Making a QObject Available to the script Engine"
Code:
1 2 3 4 5 6
| ...
QScriptEngine engine ;
QMemory * pMem = new QMemory() ;
QScriptValue objectValue = engine.newQObject(pMem) ;
engine.globalObject().setProperty("Memory", objectValue) ;
... |
Maintenant dans le code du script j'ai des fonctions accédant à la mémoire :
Code:
1 2 3 4 5
| function updateMem()
{
this.Memory.write(0,1) ;
return 0 ;
} |
Ces fonctions sont accessibles depuis la GUI. En effet à l'initialisation après avoir ouvert le fichier de script je parse toutes les propriétés globales (donc les fonctions) et je les rends accessible sur la GUI via une liste dynamique de boutons qui ont le nom de la fonction.
Appuyer sur un bouton provoque le code suivant :
Code:
1 2 3 4 5 6 7
| qint32 Controlleur::exec (const QString & szFunc)
{
QScriptValue ret ;
ret = m_engine.globalObject().property(szFunc).call(QScriptValue()) ;
Q_ASSER(ret.isValid()) ;
return ret.toInt32 ;
} |
Voilà mais bien sur rien fonctionne.:cry: