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  · 

QAxScriptManager Class Reference
[QAxContainer module]

The QAxScriptManager class provides a bridge between application objects and script code. More...

 #include <QAxScriptManager>

Inherits QObject.

Public Functions

  • QAxScriptManager ( QObject * parent = 0 )
  • ~QAxScriptManager ()
  • void addObject ( QAxBase * object )
  • void addObject ( QObject * object )
  • QVariant call ( const QString & function, const QVariant & var1 = QVariant(), const QVariant & var2 = QVariant(), const QVariant & var3 = QVariant(), const QVariant & var4 = QVariant(), const QVariant & var5 = QVariant(), const QVariant & var6 = QVariant(), const QVariant & var7 = QVariant(), const QVariant & var8 = QVariant() )
  • QVariant call ( const QString & function, QList<QVariant> & arguments )
  • QStringList functions ( QAxScript::FunctionFlags flags = QAxScript::FunctionNames ) const
  • QAxScript * load ( const QString & code, const QString & name, const QString & language )
  • QAxScript * load ( const QString & file, const QString & name )
  • QAxScript * script ( const QString & name ) const
  • QStringList scriptNames () const
  • 29 public functions inherited from QObject

Signals

  • void error ( QAxScript * script, int code, const QString & description, int sourcePosition, const QString & sourceText )

Static Public Members

  • 5 static public members inherited from QObject

Additional Inherited Members

  • 1 property inherited from QObject
  • 1 public slot inherited from QObject
  • 7 protected functions inherited from QObject

Detailed Description

The QAxScriptManager class provides a bridge between application objects and script code.

The QAxScriptManager acts as a bridge between the COM objects embedded in the Qt application through QAxObject or QAxWidget, and the scripting languages available through the Windows Script technologies, usually JScript and VBScript.

Create one QAxScriptManager for each separate document in your application, and add the COM objects the scripts need to access using addObject(). Then load() the script sources and invoke the functions using call().

Warning: This class is not available with the bcc5.5 and MingW compilers.

See also QAxScript, QAxScriptEngine, QAxBase, and ActiveQt Framework.


Member Function Documentation

QAxScriptManager::QAxScriptManager ( QObject * parent = 0 )

Creates a QAxScriptManager object. parent is passed on to the QObject constructor.

It is usual to create one QAxScriptManager for each document in an application.

QAxScriptManager::~QAxScriptManager ()

Destroys the objects, releasing all allocated resources.

void QAxScriptManager::addObject ( QAxBase * object )

Adds object to the manager. Scripts handled by this manager can access the object in the code using the object's objectName property.

You must add all the necessary objects before loading any scripts.

void QAxScriptManager::addObject ( QObject * object )

This is an overloaded function.

Adds a generic COM wrapper for object to the manager. object must be exposed as a COM object using the functionality provided by the QAxServer module. Applications using this function you must link against the qaxserver library.

QVariant QAxScriptManager::call ( const QString & function, const QVariant & var1 = QVariant(), const QVariant & var2 = QVariant(), const QVariant & var3 = QVariant(), const QVariant & var4 = QVariant(), const QVariant & var5 = QVariant(), const QVariant & var6 = QVariant(), const QVariant & var7 = QVariant(), const QVariant & var8 = QVariant() )

Calls function, passing the parameters var1, var1, var2, var3, var4, var5, var6, var7 and var8 as arguments and returns the value returned by the function, or an invalid QVariant if the function does not return a value or when the function call failed. The call returns when the script's execution has finished.

In most script engines the only supported parameter type is "const QVariant&", for example, to call a JavaScript function

 function setNumber(number)
 {
     n = number;
 }

use

 QValueList args;
 args << 5;
 script->call("setNumber(const QVariant&)", args);

As with dynamicCall the parameters can directly be embedded in the function string.

 script->call("setNumber(5)");

However, this is slower.

Functions provided by script engines that don't support introspection are not available and must be called directly using QAxScript::call() on the respective script object.

Note that calling this function can be significantely slower than using call() on the respective QAxScript directly.

QVariant QAxScriptManager::call ( const QString & function, QList<QVariant> & arguments )

This is an overloaded function.

Calls function passing arguments as parameters, and returns the result. Returns when the script's execution has finished.

void QAxScriptManager::error ( QAxScript * script, int code, const QString & description, int sourcePosition, const QString & sourceText )   [signal]

This signal is emitted when an execution error occurred while running script.

code, description, sourcePosition and sourceText contain information about the execution error.

Warning: Do not delete script in a slot connected to this signal. Use deleteLater() instead.

QStringList QAxScriptManager::functions ( QAxScript::FunctionFlags flags = QAxScript::FunctionNames ) const

Returns a list with all the functions that are available. Functions provided by script engines that don't support introspection are not included in the list. The functions are either provided with full prototypes or only as names, depending on the value of flags.

QAxScript * QAxScriptManager::load ( const QString & code, const QString & name, const QString & language )

Loads the script source code using the script engine for language. The script can later be referred to using its name which should not be empty.

The function returns a pointer to the script for the given code if the code was loaded successfully; otherwise it returns 0.

If language is empty it will be determined heuristically. If code contains the string "End Sub" it will be interpreted as VBScript, otherwise as JScript. Additional script engines can be registered using registerEngine().

You must add all the objects necessary (using addObject()) before loading any scripts. If code declares a function that is already available (no matter in which language) the first function is overloaded and can no longer be called via call(); but it will still be available by calling its script directly.

See also addObject(), scriptNames(), and functions().

QAxScript * QAxScriptManager::load ( const QString & file, const QString & name )

This is an overloaded function.

Loads the source code from the file. The script can later be referred to using its name which should not be empty.

The function returns a pointer to the script engine for the code in file if file was loaded successfully; otherwise it returns 0.

The script engine used is determined from the file's extension. By default ".js" files are interpreted as JScript files, and ".vbs" and ".dsm" files are interpreted as VBScript. Additional script engines can be registered using registerEngine().

bool QAxScriptManager::registerEngine ( const QString & name, const QString & extension, const QString & code = QString() )   [static]

Registers the script engine called name and returns true if the engine was found; otherwise does nothing and returns false.

The script engine will be used when loading files with the given extension, or when loading source code that contains the string code.

QAxScript * QAxScriptManager::script ( const QString & name ) const

Returns the script called name.

You can use the returned pointer to call functions directly through QAxScript::call(), to access the script engine directly, or to delete and thus unload the script.

QString QAxScriptManager::scriptFileFilter ()   [static]

Returns a file filter listing all the supported script languages. This filter string is convenient for use with QFileDialog.

QStringList QAxScriptManager::scriptNames () const

Returns a list with the names of all the scripts.

Publicité

Best Of

Actualités les plus lues

Semaine
Mois
Année
  1. «Le projet de loi des droits du développeur» : quelles conditions doivent remplir les entreprises pour que le développeur puisse réussir ? 72
  2. Les développeurs détestent-ils les antivirus ? Un programmeur manifeste sa haine envers ces solutions de sécurité 27
  3. Une nouvelle ère d'IHM 3D pour les automobiles, un concept proposé par Digia et implémenté avec Qt 3
  4. Qt Creator 2.5 est sorti en beta, l'EDI supporte maintenant plus de fonctionnalités de C++11 2
  5. Vingt sociétés montrent leurs décodeurs basés sur Qt au IPTV World Forum, en en exploitant diverses facettes (déclaratif, Web, widgets) 0
  6. PySide devient un add-on Qt et rejoint le Qt Project et le modèle d'open gouvernance 1
  7. Thread travailleur avec Qt en utilisant les signaux et les slots, un article de Christophe Dumez traduit par Thibaut Cuvelier 1
  1. « Quelque chose ne va vraiment pas avec les développeurs "modernes" », un développeur à "l'ancienne" critique la multiplication des bibliothèques 101
  2. Pourquoi les programmeurs sont-ils moins payés que les gestionnaires de programmes ? Manquent-ils de pouvoir de négociation ? 51
  3. «Le projet de loi des droits du développeur» : quelles conditions doivent remplir les entreprises pour que le développeur puisse réussir ? 69
  4. Les développeurs détestent-ils les antivirus ? Un programmeur manifeste sa haine envers ces solutions de sécurité 27
  5. Qt Commercial : Digia organise un webinar gratuit le 27 mars sur la conception d'interfaces utilisateur et d'applications avec le framework 0
  6. Quelles nouveautés de C++11 Visual C++ doit-il rapidement intégrer ? Donnez-nous votre avis 10
  7. 2017 : un quinquennat pour une nouvelle version du C++ ? Possible, selon Herb Sutter 11
Page suivante
  1. Linus Torvalds : le "C++ est un langage horrible", en justifiant le choix du C pour le système de gestion de version Git 100
  2. Comment prendre en compte l'utilisateur dans vos applications ? Pour un développeur, « 90 % des utilisateurs sont des idiots » 229
  3. Quel est LE livre que tout développeur doit lire absolument ? Celui qui vous a le plus marqué et inspiré 96
  4. Apple cède et s'engage à payer des droits à Nokia, le conflit des brevets entre les deux firmes s'achève 158
  5. Nokia porte à nouveau plainte contre Apple pour violation de sept nouveaux brevets 158
  6. Quel est le code dont vous êtes le plus fier ? Pourquoi l'avez-vous écrit ? Et pourquoi vous a-t-il donné autant de satisfaction ? 83
  7. « Quelque chose ne va vraiment pas avec les développeurs "modernes" », un développeur à "l'ancienne" critique la multiplication des bibliothèques 101
Page suivante

Le Qt Labs au hasard

Logo

Le moteur de rendu OpenGL

Les Qt Labs sont les laboratoires des développeurs de Qt, où ils peuvent partager des impressions sur le framework, son utilisation, ce que pourrait être son futur. 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.5
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