QAxScriptManager Class
QAxScriptManager クラスは、アプリケーション・オブジェクトとスクリプト・コードの橋渡しをします。詳細...
Header: | #include <QAxScriptManager> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS AxContainer) target_link_libraries(mytarget PRIVATE Qt6::AxContainer) |
qmake: | QT += axcontainer |
Inherits: | 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 オブジェクトを作成します。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&"のみである。
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を返します。使用するスクリプトエンジンは、ファイルの拡張子から判断します。デフォルトでは、".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
すべてのスクリプトの名前のリストを返します。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。