このページでは

QAxScriptManager Class

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

ヘッダー: #include <qaxscript.h>
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 Script テクノロジー(通常は JScript および VBScript)を通じて利用可能なスクリプト言語との間のブリッジとして機能します。

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

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

QAxScript 、QAxScriptEngine 、QAxBase 、およびActiveQt Frameworkも参照してください 。

メンバ関数のドキュメント

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

QAxScriptManager オブジェクトを作成します。parent は、QObject のコンストラクタに渡されます。

通常、アプリケーション内のドキュメントごとに 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 を呼び出し、引数としてvar1 、var1 、var2 、var3 、var4 、var5 、var6 、var7 、var8 を渡します。そして、関数が返した値を返します。関数が値を返さない場合や関数の呼び出しに失敗した場合は、無効なQVariant を返します。スクリプトの実行が終了すると、この呼び出しは終了します。

ほとんどのスクリプトエンジンでは、サポートされているパラメータ型は「constQVariant&」のみです。たとえば、JavaScript関数を呼び出す場合は

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

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

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

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

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

language が空の場合、ヒューリスティックに判定されます。code に「End Sub」という文字列が含まれている場合はVBScriptとして、それ以外の場合はJScriptとして解釈されます。registerEngine() を使用して、追加のスクリプトエンジンを登録することができます。

スクリプトを読み込む前に、必要なすべてのオブジェクトを(addObject() を使用して)追加する必要があります。code で、すでに利用可能な関数(言語を問わず)が宣言されている場合、最初の関数はオーバーロードされ、call() 経由では呼び出せなくなりますが、script を直接呼び出すことで引き続き利用可能です。

addObject()、scriptNames()、およびfunctions()も参照してください 。

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

file からソースコードを読み込みます。このスクリプトは、後でname を使用して参照できますが、このポインタは空であってはなりません。

file の読み込みに成功した場合、この関数はfile 内のコードに対するスクリプトエンジンへのポインタを返します。そうでない場合は0を返します。

使用されるスクリプトエンジンは、ファイルの拡張子によって決定されます。デフォルトでは、「.js」ファイルは JScript ファイルとして、また「.vbs」および「.dsm」ファイルは VBScript として解釈されます。追加のスクリプトエンジンは、registerEngine() を使用して登録できます。

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

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

name というスクリプトエンジンを登録し、エンジンが見つかった場合は true を返します。見つからない場合は何もしないで false を返します。

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

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

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

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

[static] QString QAxScriptManager::scriptFileFilter()

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

QStringList QAxScriptManager::scriptNames() const

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

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