QAxScriptManager 類

The QAxScriptManager 類提供應用程序對象和腳本代碼之間的橋梁。 更多...

頭: #include <QAxScriptManager>
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 & 語言 )
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 & 描述 , int sourcePosition , const QString & sourceText )

靜態公共成員

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

額外繼承成員

詳細描述

The QAxScriptManager 類提供應用程序對象和腳本代碼之間的橋梁。

The QAxScriptManager 充當在 Qt 應用程序嵌入 COM 對象之間的橋梁透過 QAxObject or QAxWidget ,及透過 Windows Script 技術可用的腳本語言,通常是 JScript 和 VBScript。

創建一個 QAxScriptManager 為應用程序中的每個單獨文檔,並添加需要訪問腳本的 COM (組件對象模型) 對象使用 addObject ()。然後 load () 腳本源代碼並援引函數使用 call ().

警告: 此類不可用於 bcc5.5 編譯器。

另請參閱 QAxScript , QAxScriptEngine , QAxBase ,和 ActiveQt 框架 .

成員函數文檔編製

QAxScriptManager:: QAxScriptManager ( QObject * parent = nullptr)

創建 QAxScriptManager 對象。 parent 被傳遞給 QObject 構造函數。

通常創建一個 QAxScriptManager 為應用程序中的每個文檔。

[override virtual] QAxScriptManager:: ~QAxScriptManager ()

銷毀對象,釋放所有分配資源。

void QAxScriptManager:: addObject ( QAxBase * object )

添加 object 到管理器。由此管理器處理的腳本可以訪問代碼中的對象,使用對象的 objectName 特性。

必須添加所有必要對象,在加載任何腳本之前。

void QAxScriptManager:: addObject ( QObject * object )

這是重載函數。

添加一般 COM (組件對象模型) 包裹器為 object 到管理器。 object 必須被暴露成 COM 對象使用功能提供通過 QAxServer 模塊。使用此函數的應用程序必須鏈接到 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 and var8 作為自變量並返迴由函數返迴的值,或無效 QVariant 若函數不返迴值 (或當函數調用失敗時)。調用返迴,當腳本執行完成時。

大多數腳本引擎僅支持的參數類型為 const QVariant &,例如,要調用 JavaScript 函數

function setNumber(number)
{
    n = number;
}
					

使用

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

就像 dynamicCall 參數可以被直接嵌入函數字符串中。

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

不管怎樣,這更慢。

不支持自省由腳本引擎提供的函數不可用,且必須直接被調用使用 QAxScript::call () 在各個 script 對象。

注意,調用此函數會比使用 call() 顯著更慢在各個 QAxScript 直接。

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

這是重載函數。

調用 function 傳遞 arguments 作為參數,並返迴結果。返迴當腳本執行完成時。

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

此信號被發射,齣現執行錯誤當運行 script .

code , 描述 , sourcePosition and sourceText 包含執行錯誤的有關信息。

警告: 不要刪除 script 在連接到此信號的槽中。使用 deleteLater () 代替。

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

返迴具有所有可用函數的列錶。不支持自省由腳本引擎提供的函數不在列錶中。函數按完整原型提供 (或按名稱提供),從屬值對於 flags .

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

加載腳本源 code 使用腳本引擎對於 語言 。稍後可以引用腳本,以使用其 name 不應為空。

函數返迴指針指嚮腳本為給定 code code 加載成功;否則,返迴 0。

語言 為空,將啓發式確定它。若 code 包含字符串 End Sub 會將它解釋成 VBScript,否則解釋成 JScript。可以注冊其它腳本語言使用 registerEngine ().

必須添加所有必要對象 (使用 addObject ()) before 加載任何腳本。若 code 聲明已經可用的函數 (無論按哪種語言),將重載第 1 個函數且不再可以被調用憑藉 call ();但它仍然是可用的通過調用其 script 直接。

另請參閱 addObject (), scriptNames (),和 functions ().

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

這是重載函數。

加載源代碼從 file 。稍後可以引用腳本,以使用其 name 不應為空。

函數返迴的指針指嚮腳本引擎對於代碼在 file if 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

返迴具有所有腳本名稱的列錶。