QAxScriptManager Class

Die Klasse QAxScriptManager stellt eine Brücke zwischen Anwendungsobjekten und Skriptcode dar. Mehr...

Kopfzeile: #include <QAxScriptManager>
CMake: find_package(Qt6 REQUIRED COMPONENTS AxContainer)
target_link_libraries(mytarget PRIVATE Qt6::AxContainer)
qmake: QT += axcontainer
Vererbt: QObject

Öffentliche Funktionen

QAxScriptManager(QObject *parent = nullptr)
virtual ~QAxScriptManager() override
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

Signale

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

Statische öffentliche Mitglieder

bool registerEngine(const QString &name, const QString &extension, const QString &code = QString())
QString scriptFileFilter()

Detaillierte Beschreibung

Der QAxScriptManager fungiert als Brücke zwischen den COM-Objekten, die über QAxObject oder QAxWidget in die Qt-Anwendung eingebettet sind, und den Skriptsprachen, die über die Windows Script-Technologien verfügbar sind, normalerweise JScript und VBScript.

Erstellen Sie einen QAxScriptManager für jedes einzelne Dokument in Ihrer Anwendung und fügen Sie die COM-Objekte hinzu, auf die die Skripte mit addObject() zugreifen müssen. Dann load() die Skriptquellen und rufen Sie die Funktionen mit call() auf.

Warnung: Diese Klasse ist nicht mit dem bcc5.5-Compiler verfügbar.

Siehe auch QAxScript, QAxScriptEngine, QAxBase, und ActiveQt Framework.

Dokumentation der Mitgliedsfunktionen

[explicit] QAxScriptManager::QAxScriptManager(QObject *parent = nullptr)

Erzeugt ein QAxScriptManager-Objekt. parent wird an den QObject -Konstruktor weitergegeben.

Es ist üblich, für jedes Dokument in einer Anwendung einen QAxScriptManager zu erstellen.

[override virtual noexcept] QAxScriptManager::~QAxScriptManager()

Zerstört die Objekte und gibt alle zugewiesenen Ressourcen frei.

void QAxScriptManager::addObject(QAxBase *object)

Fügt object zu dem Manager hinzu. Skripte, die von diesem Manager verwaltet werden, können im Code auf das Objekt zugreifen, indem sie die Eigenschaft objectName des Objekts verwenden.

Sie müssen alle erforderlichen Objekte hinzufügen, bevor Sie ein Skript laden.

void QAxScriptManager::addObject(QObject *object)

Dies ist eine überladene Funktion.

Fügt dem Manager einen generischen COM-Wrapper für object hinzu. object muss als COM-Objekt unter Verwendung der vom Modul QAxServer bereitgestellten Funktionalität dargestellt werden. Anwendungen, die diese Funktion verwenden, müssen gegen die qaxserver-Bibliothek gelinkt werden.

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

Ruft function auf und übergibt die Parameter var1, var1, var2, var3, var4, var5, var6, var7 und var8 als Argumente und gibt den von der Funktion zurückgegebenen Wert oder ein ungültiges QVariant zurück, wenn die Funktion keinen Wert zurückgibt oder der Funktionsaufruf fehlgeschlagen ist. Der Aufruf kehrt zurück, wenn die Ausführung des Skripts beendet ist.

In den meisten Skript-Engines ist der einzige unterstützte Parametertyp "const QVariant&", um beispielsweise eine JavaScript-Funktion aufzurufen

function setNumber(number)
{
    n = number;
}

verwenden

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

Wie bei dynamicCall können die Parameter direkt in den Funktionsstring eingebettet werden.

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

Dies ist jedoch langsamer.

Funktionen, die von Skript-Engines bereitgestellt werden, die keine Introspektion unterstützen, sind nicht verfügbar und müssen direkt mit QAxScript::call() auf dem entsprechenden script Objekt aufgerufen werden.

Beachten Sie, dass der Aufruf dieser Funktion erheblich langsamer sein kann als die direkte Verwendung von call() auf dem entsprechenden QAxScript.

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

Dies ist eine überladene Funktion.

Ruft function mit arguments als Parameter auf und gibt das Ergebnis zurück. Gibt zurück, wenn die Ausführung des Skripts beendet ist.

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

Dieses Signal wird ausgegeben, wenn bei der Ausführung von script ein Ausführungsfehler aufgetreten ist.

code description, und enthalten Informationen über den Ausführungsfehler. sourcePosition sourceText

Warnung: Löschen Sie nicht script in einem mit diesem Signal verbundenen Slot. Verwenden Sie stattdessen deleteLater().

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

Gibt eine Liste mit allen verfügbaren Funktionen zurück. Funktionen, die von Skript-Engines bereitgestellt werden, die keine Introspektion unterstützen, sind nicht in der Liste enthalten. Je nach dem Wert von flags werden die Funktionen entweder mit vollständigen Prototypen oder nur als Namen bereitgestellt.

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

Lädt die Skriptquelle code unter Verwendung der Skript-Engine für language. Das Skript kann später über seine name referenziert werden, die nicht leer sein sollte.

Die Funktion gibt einen Zeiger auf das Skript für das angegebene code zurück, wenn das code erfolgreich geladen wurde; andernfalls gibt sie 0 zurück.

Falls language leer ist, wird dies heuristisch ermittelt. Wenn code die Zeichenkette "End Sub" enthält, wird es als VBScript interpretiert, ansonsten als JScript. Zusätzliche Script-Engines können mit registerEngine() registriert werden.

Sie müssen alle erforderlichen Objekte hinzufügen (mit addObject()) , bevor Sie Skripte laden. Wenn code eine Funktion deklariert, die bereits verfügbar ist (egal in welcher Sprache), wird die erste Funktion überladen und kann nicht mehr über call() aufgerufen werden; sie ist aber immer noch verfügbar, wenn die Funktion script direkt aufgerufen wird.

Siehe auch addObject(), scriptNames(), und functions().

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

Dies ist eine überladene Funktion.

Lädt den Quellcode aus file. Auf das Skript kann später über dessen name verwiesen werden, das nicht leer sein sollte.

Die Funktion gibt einen Zeiger auf die Script-Engine für den Code in file zurück, wenn file erfolgreich geladen wurde; andernfalls gibt sie 0 zurück.

Die verwendete Skript-Engine wird anhand der Dateierweiterung bestimmt. Standardmäßig werden ".js"-Dateien als JScript-Dateien interpretiert, und ".vbs"- und ".dsm"-Dateien werden als VBScript interpretiert. Zusätzliche Skript-Engines können mit registerEngine() registriert werden.

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

Registriert die Skript-Engine namens name und gibt true zurück, wenn die Engine gefunden wurde; andernfalls tut sie nichts und gibt false zurück.

Die Skript-Engine wird verwendet, wenn Dateien mit der angegebenen extension geladen werden, oder wenn Quellcode geladen wird, der die Zeichenkette code enthält.

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

Gibt das Skript mit dem Namen name zurück.

Sie können den zurückgegebenen Zeiger verwenden, um Funktionen direkt über QAxScript::call() aufzurufen, um direkt auf die Skript-Engine zuzugreifen oder um das Skript zu löschen und damit zu entladen.

[static] QString QAxScriptManager::scriptFileFilter()

Gibt einen Dateifilter zurück, der alle unterstützten Skriptsprachen auflistet. Diese Filterzeichenkette ist für die Verwendung mit QFileDialog geeignet.

QStringList QAxScriptManager::scriptNames() const

Gibt eine Liste mit den Namen aller Skripte zurück.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.