QScriptableLa classe QScriptable permet d'accéder à l'environnement Qt Script depuis les fonctions membres C++ de Qt. Plus d'informations... #include <QScriptable> Voir la position dans l'arbre des classes. Description détailléeLa classe QScriptable permet d'accéder à l'environnement Qt Script depuis les fonctions membres C++ de Qt. Avec QScriptEngine::newQObject(), vous pouvez exposer les signaux, les slots et les propriétés de tout QObject (ou sous-classe) au code de script. QScriptable augmente cette fonctionnalité en donnant à vos membres C++ l'accès à l'environnement de Qt Script dans lequel ils sont invoqués ; conceptuellement, il est similaire à QObject::sender(). En réalisant une sous-classe de QScriptable, vous obtiendrez les fonctions suivantes : thisObject(), argumentCount(), argument(), context() et engine(). Avec ces fonctions, vous aurez un accès complet à l'environnement de Qt Script depuis les slots et l'accès aux fonctions de propriétés de votre classe, quand elles sont invoquées à partir du script. Par exemple, vous pouvez lancer une exception Qt Script depuis un slot ; manipuler l'objet this associé à la fonction appelée ; inspecter les arguments stockés dans le QScriptContext pour connaître les « vrais » arguments passés à la fonction du script et appeler des fonctions du script depuis votre slot. Le cas d'utilisation typique de QScriptable est d'implémenter des prototypes objets pour personnaliser les types C++. Vous définissez les scripts d'interface de votre type personnalisé dans une sous-classe QScriptable en utilisant les propriétés et les slots. Ensuite, vous enveloppez une instance de votre classe en utilisant QScriptEngine::newQObject() et enfin, vous passez le résultat à QScriptEngine::setDefaultPrototype(). Voir l'exemple Prototypes par défaut pour constater comment cela peut être réalisé. Le code suivant correspond à la réalisation classique d'une sous-classe de QScriptable : class MyScriptableObject: public QObject, protected QScriptable { Q_OBJECT ... public slots: void doSomething(); double doSomethingElse(); } L'unique différence avec la réalisation régulière d'une sous-classe de QObject est que vous héritez également de QScriptable. Dans l'implémentation de votre slot, vous pouvez ensuite utiliser les fonctions héritées de QScriptable : void MyScriptableObject::doSomething() { context()->throwError("Lance une erreur depuis un slot"); } double MyScriptableObject::doSomethingElse() { return qscriptvalue_cast<double>(thisObject()); } Voir aussi l'exemple Prototypes par défaut et QScriptEngine::newFunction(). Fonctions membresQScriptValue QScriptable::argument ( int index ) constRetourne l'argument de la fonction dans lindex donné, ou un objet QScriptValue invalide si la fonction de Qt n'a pas été invoquée depuis le script. Voir aussi argumentCount(). int QScriptable::argumentCount () constRetourne le nombre d'arguments passés à la fonction dans cette invocation, ou -1 si la fonction de Qt n'a pas été invoquée depuis le script. Voir aussi argument(). QScriptContext * QScriptable::context () constRetourne un pointeur sur l'objet QScriptContext associé à la fonction courante de Qt appelée, ou 0 si la fonction de Qt n'a pas été invoquée depuis le script. QScriptEngine * QScriptable::engine () constRetourne un pointeur sur l'objet QScriptEngine associé à la fonction courante de Qt appelée, ou 0 si la fonction de Qt n'a pas été invoquée depuis le script. QScriptValue QScriptable::thisObject () constRetourne l'objet this associé à la fonction courante de Qt appelée, ou un objet QScriptValue invalide si la fonction de Qt n'a pas été invoquée depuis le script. RemerciementsMerci à Mikael Sans pour la traduction et à Jonathan Courtois, Thibaut Cuvelier ainsi qu'à Jacques Thery pour leur relecture ! |
Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. | Qt 4.7 | |
Copyright © 2024 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD. | ||
Vous avez déniché une erreur ? Un bug ? Une redirection cassée ? Ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP ! |