本文主要以圖文的方法和大家分享ActiveQt與js交互實(shí)現(xiàn)示例,希望能幫助到大家。
1、 vs2015+Qt 5.7 開發(fā)ActiveX創(chuàng)建工程
1.1、選擇“新建”中的“項(xiàng)目”
1.2、選擇Qt中的Qt ActiveQt Server,并填寫項(xiàng)目名稱等,界面如下:
1.3、接著點(diǎn)擊下一步直到完成即可,其中對外提供的接口定義如下圖所示:
2、 vs2015調(diào)試ActiveX控件環(huán)境配置
2.1、點(diǎn)擊調(diào)試按鈕下拉中選擇“附加進(jìn)程到”
2.2、點(diǎn)擊“調(diào)試”按鈕下拉中選擇“附加進(jìn)程到”進(jìn)入如下界面:
2.3、查找iexplore.exe進(jìn)程,選擇“標(biāo)題”為空的ie瀏覽器進(jìn)程,點(diǎn)擊“附加”按鈕,此時即可進(jìn)行調(diào)試,界面如下:
3、 ActiveQt與js回調(diào)交互實(shí)現(xiàn)
3.1、方式一:js直接重寫Qt的信號函數(shù)
3.1.1、Qt定義信號方法
voideventCallBack(intnType, QStringstrEventName);
3.1.2、js重寫方法
首先要定義控件的OBJECT標(biāo)簽,并指定id。假定id為ActiveQtServerCallBack,則js方法定義如下:
functionActiveQtServerCallBack::eventCallBack(nType,strEventName)
{
//實(shí)現(xiàn)的邏輯代碼
……
}
注意事項(xiàng):(1)各參數(shù)名稱要一致;(2)該函數(shù)要放置在<OBJECT>標(biāo)簽后面實(shí)現(xiàn),否則會出現(xiàn)異常,無法進(jìn)行回調(diào);<ps:不知道js有沒有前置申明的概念>
3.2、方式二:js傳參回調(diào)
3.2.1、Qt定義供外部調(diào)用的傳參接口
intAttachEvent(constQString& eventName, IDispatch* dispFunc)
參數(shù)說明:
(1)eventName[in]:該參數(shù)可以自行選擇,這邊用做回調(diào)內(nèi)容的顯示;
(2)dispFunc[in]:該參數(shù)是js傳遞進(jìn)來的回調(diào)函數(shù)地址;
3.2.2、js定義回調(diào)方法
function ActiveQtServerCallBackTrainsmitTest(x, y, z, strEvent)
{
//實(shí)現(xiàn)的邏輯代碼
……
}
注意事項(xiàng):其中x,y,z,strEvent參數(shù)要和Qt中定義的參數(shù)名稱一致,否則無法回調(diào);
以上就是ActiveQt與js交互實(shí)現(xiàn)圖文講解的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!