QAxScriptManager Class

QAxScriptManager クラスは、アプリケーション・オブジェクトとスクリプト・コードの橋渡しをします。詳細...

ヘッダー #include <QAxScriptManager>
CMake: find_package(Qt6 REQUIRED COMPONENTS AxContainer)
target_link_libraries(mytarget PRIVATE Qt6::AxContainer)
qmake: QT += axcontainer
継承: QObject

パブリック関数

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

シグナル

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

静的パブリックメンバー

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

詳細説明

QAxScriptManager は、QAxObject またはQAxWidget を通して Qt アプリケーションに埋め込まれた COM オブジェクトと、Windows スクリプト技術(通常は JScript と VBScript)を通して利用可能なスクリプト言語との間のブリッジとして動作します。

QAxScriptManagerをアプリケーション内の個別のドキュメントごとに1つ作成し、addObject ()を使用してスクリプトがアクセスする必要があるCOMオブジェクトを追加します。次に、load ()を使用してスクリプト・ソースを作成し、call ()を使用して関数を呼び出します。

警告: このクラスは、bcc5.5 コンパイラでは使用できません。

QAxScript,QAxScriptEngine,QAxBase,ActiveQt Frameworkも参照してください

メンバ関数ドキュメント

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

QAxScriptManager オブジェクトを作成します。parentQObject コンストラクタに渡されます。

通常、アプリケーションの各ドキュメントに 1 つの QAxScriptManager を作成します。

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

オブジェクトを破棄し、割り当てられたすべてのリソースを解放する。

void QAxScriptManager::addObject(QAxBase *object)

マネージャーにobject を追加します。このマネージャーによって処理されるスクリプトは、オブジェクトのobjectName プロパティを使用してコード内のオブジェクトにアクセスできます。

スクリプトをロードする前に、必要なオブジェクトをすべて追加する必要があります。

void QAxScriptManager::addObject(QObject *object)

これはオーバーロードされた関数である。

object 用の汎用 COM ラッパーをマネージャに追加します。object は、QAxServer モジュールによって提供される機能を使用して COM オブジェクトとして公開する必要があります。この関数を使用するアプリケーションは、qaxserverライブラリに対してリンクする必要があります。

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

function を呼び出し、パラメータvar1var1var2var3var4var5var6var7var8 を引数として渡し、関数が返した値、または関数が値を返さない場合や関数の呼び出しに失敗した場合は無効なQVariant を返します。呼び出しは、スクリプトの実行が終了すると返される。

ほとんどのスクリプトエンジンでサポートされている引数の型は "constQVariant&"のみである。

function setNumber(number)
{
    n = number;
}

使用

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

dynamicCall と同様に、パラメータを関数文字列に直接埋め込むことができます。

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

しかし、これはより遅いです。

イントロスペクションをサポートしていないスクリプト・エンジンが提供する関数は利用できないので、それぞれのscript オブジェクトのQAxScript::call ()を使用して直接呼び出す必要があります。

この関数を呼び出すと、QAxScript の call() を直接使用するよりも大幅に遅くなる可能性があることに注意。

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

これはオーバーロードされた関数である。

arguments をパラメータとしてfunction を呼び出し、結果を返す。スクリプトの実行が終了したときに返されます。

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

このシグナルは、script の実行中に実行エラーが発生したときに発せられる。

code description, , に実行エラーの情報が含まれます。sourcePosition sourceText

警告: このシグナルに接続されているスロットのscript を削除しないでください。代わりにdeleteLater() を使用してください。

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

利用可能なすべての関数をリストにして返します。introspectionをサポートしていないスクリプトエンジンが提供する関数は、リストに含まれません。関数は、flags の値に応じて、完全なプロトタイプで提供されるか、名前としてのみ提供されます。

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

language 用のスクリプトエンジンを使用して、スクリプトソースcode を読み込みます。このスクリプトは、後でname を使って参照することができる。

この関数は、code の読み込みに成功した場合、指定されたcode のスクリプトへのポインタを返します。

language が空の場合は、発見的に決定される。code に "End Sub "という文字列が含まれていればVBScriptとして、そうでなければJScriptとして解釈されます。追加のスクリプト・エンジンは、registerEngine ()を使って登録できます。

スクリプトを読み込む前に、必要なオブジェクトをすべて追加する必要があります(addObject ()を使用)。code script ですでに使用可能な関数が宣言されている場合 (どの言語であっても)、最初の関数はオーバーロードされ、call() から呼び出すことはできなくなります。

addObject()、scriptNames()、functions()も参照のこと

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

これはオーバーロードされた関数である。

file からソースコードをロードする。 スクリプトは後でname を使って参照することができる。

この関数は、file のロードに成功した場合、file のコードのスクリプトエンジンへのポインタを返し、失敗した場合は 0 を返します。

そうでない場合は0を返します。使用するスクリプトエンジンは、ファイルの拡張子から判断します。デフォルトでは、".js "ファイルはJScriptファイルとして解釈され、".vbs "と".dsm "ファイルはVBScriptとして解釈されます。追加のスクリプト・エンジンは、registerEngine() を使用して登録できます。

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

name と呼ばれるスクリプトエンジンを登録し、エンジンが見つかれば真を返し、見つからなければ何もせず偽を返します。

こ の ス ク リ プ ト エンジンは、 与えられたextension を持つフ ァ イ ルを読み込む と き、 ま たは文字列code を含む ソ ース コ ー ド を読み込む と き に使用 さ れます。

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

name というスクリプトを返します。

返されたポインタを使用して、QAxScript::call() から関数を直接呼び出したり、スクリプトエンジンに直接アクセスしたり、スクリプトを削除してアンロードしたりすることができます。

[static] QString QAxScriptManager::scriptFileFilter()

サポートされているすべてのスクリプト言語をリストしたファイルフィルタを返します。このフィルター文字列はQFileDialog で使用するのに便利です。

QStringList QAxScriptManager::scriptNames() const

すべてのスクリプトの名前を含むリストを返す。

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