Visual Studio下Qt调用IDL

时间:2024-04-22 21:37:11

一.简单介绍:

1.ActiveQt包含QAxContainer和QAxServer组件。

  1) QAxContainer允许使用COM对象,并且可以将ActiveX控件嵌入到Qt程序中去。

    QAxContainer是有三个类组成的。分别是:

    QAxObject封装了COM对象

    QAxWidget封装了ActiveX控件

    QAxBase是QAxObject和QAxWidget的父类,它实现了封装COM的核心函数。

    通过调用QAxWidget的property()方法和SetProperty方法可以获取和设置ActiveX控件的属性。

    调用ActiveX控件的方法属性需要COM中的数据类型和Qt中的数据类型的转换。COM中数据类型和Qt中的数据类型对应的表格:

    Visual Studio下Qt调用IDL

  2) QAxServer可以将我们写的Qt控件导出为COM对象或者是ActiveX控件。

  3)一个简单例子:

    #include <QApplication>

    #include <QtGui>

    #include <QAxWidget>

    int main(int argc, char *argv[])

    {

        QApplication a(argc, argv);

      QAxWidget *flash = new QAxWidget(0,0);

        flash->resize(500,80);

        flash->setControl(QString::fromUtf8("{d27cdb6e-ae6d-11cf-96b8-444553540000}"));

        flash->dynamicCall("LoadMovie(long,string)",0,"F:/1.swf");

        flash->show();

        return a.exec();

    }

  

二.方法

1.首先在windows中注册idldrawx3.ocx

  进入cmd,输入以下命令:(注意后面的路径要带双引号)

  regsvr32  “C:\Program Files\ITT\IDL\IDL81\bin\bin.x86\idldrawx3.ocx”

2.Qt中调用ActiveX:

  1)通过Qt设计师将 QAxWidget放到界面上;

  2)右键->设置控件;

  3)选择系统中注册的ActiveX控件IDLDrawWidget Control 3.0;

  4)如果工程中没有添加ActiveQt支持,可以通过Qt->Qt Project Settings->Qt Modules 然后勾选ActiveQt container支持;如果是Qt Creator 工程,则需要在.pro文件中
    添加: CONFIG  += qaxcontainer

3. ActiveX中接口的调用,通过dynamicCall()实现;

  dynamicCall()最多传递八个QVariant类型的参数,并且返回类型也是QVariant。