Viadeo Twitter Google Bookmarks ! Facebook Digg del.icio.us MySpace Yahoo MyWeb Blinklist Netvouz Reddit Simpy StumbleUpon Bookmarks Windows Live Favorites 
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 !

Publicité

Best Of

Actualités les plus lues

Semaine
Mois
Année
  1. « Quelque chose ne va vraiment pas avec les développeurs "modernes" », un développeur à "l'ancienne" critique la multiplication des bibliothèques 94
  2. Apercevoir la troisième dimension ou l'utilisation multithreadée d'OpenGL dans Qt, un article des Qt Quarterly traduit par Guillaume Belz 0
  3. Les développeurs ignorent-ils trop les failles découvertes dans leur code ? Prenez-vous en compte les remarques des autres ? 17
  4. Pourquoi les programmeurs sont-ils moins payés que les gestionnaires de programmes ? Manquent-ils de pouvoir de négociation ? 42
  5. Quelles nouveautés de C++11 Visual C++ doit-il rapidement intégrer ? Donnez-nous votre avis 10
  6. Adieu qmake, bienvenue qbs : Qt Building Suite, un outil déclaratif et extensible pour la compilation de projets Qt 17
  7. 2017 : un quinquennat pour une nouvelle version du C++ ? Possible, selon Herb Sutter 6
Page suivante

Le Qt Quarterly au hasard

Logo

Requêtes sérieuses avec XQuery

Qt Quarterly est la revue trimestrielle proposée par Nokia et à destination des développeurs Qt. Ces articles d'une grande qualité technique sont rédigés par des experts Qt. Lire l'article.

Communauté

Ressources

Liens utiles

Contact

  • Vous souhaitez rejoindre la rédaction ou proposer un tutoriel, une traduction, une question... ? Postez dans le forum Contribuez ou contactez-nous par MP ou par email (voir en bas de page).

Qt dans le magazine

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 © 2012 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 !
 
 
 
 
Partenaires

Hébergement Web