IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Viadeo Twitter Facebook Share on Google+   
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

QScriptable

La 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ée

La 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 membres

QScriptValue QScriptable::argument ( int index ) const

Retourne l'argument de la fonction dans l‹index 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 () const

Retourne 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 () const

Retourne 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 () const

Retourne 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 () const

Retourne 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.

Remerciements

Merci à 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 © 2021 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, 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 !