ActiveQt与js的交互实现

基于Qt的ActiveX开发笔记

1、 vs2015+Qt 5.7 开发ActiveX创建工程

1.1、选择“新建”中的“项目”

ActiveQt与js的交互实现

1.2、选择Qt中的Qt ActiveQt Server,并填写项目名称等,界面如下:

ActiveQt与js的交互实现

1.3、接着点击下一步直到完成即可,其中对外提供的接口定义如下图所示:

ActiveQt与js的交互实现

2、 vs2015调试ActiveX控件环境配置

2.1、点击调试按钮下拉中选择“附加进程到”

ActiveQt与js的交互实现

2.2、点击“调试”按钮下拉中选择“附加进程到”进入如下界面:

ActiveQt与js的交互实现

2.3、查找iexplore.exe进程,选择“标题”为空的ie浏览器进程,点击“附加”按钮,此时即可进行调试,界面如下:

ActiveQt与js的交互实现

3、 ActiveQt与js回调交互实现

3.1、方式一:js直接重写Qt的信号函数

3.1.1、Qt定义信号方法

    voideventCallBack(intnType, QStringstrEventName);

3.1.2、js重写方法

    首先要定义控件的OBJECT标签,并指定id。假定id为ActiveQtServerCallBack,则js方法定义如下:

    functionActiveQtServerCallBack::eventCallBack(nType,strEventName)

    {

        //实现的逻辑代码

        ……

    }

注意事项:(1)各参数名称要一致;(2)该函数要放置在<OBJECT>标签后面实现,否则会出现异常,无法进行回调;<ps:不知道js有没有前置申明的概念>

3.2、方式二:js传参回调

3.2.1、Qt定义供外部调用的传参接口

              intAttachEvent(constQString& eventName, IDispatch* dispFunc)

             参数说明:

             (1)eventName[in]:该参数可以自行选择,这边用做回调内容的显示;

             (2)dispFunc[in]:该参数是js传递进来的回调函数地址;

3.2.2、js定义回调方法

            function ActiveQtServerCallBackTrainsmitTest(x, y, z, strEvent)

            {

                     //实现的逻辑代码

                     ……

            }

            注意事项:其中x,y,z,strEvent参数要和Qt中定义的参数名称一致,否则无法回调;

以上只是自己的一些总结,高手勿喷!ActiveQt与js的交互实现

源代码连接地址:http://download.****.net/download/weixin_38452552/10265439

web调用demo在工程路径win32/Debug路径下WebCallDemo文件夹里面

亲测可用!!!