zoukankan      html  css  js  c++  java
  • Visual Studio下Qt调用IDL

    一.简单介绍:

    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中的数据类型对应的表格:

         

      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 FilesITTIDLIDL81inin.x86idldrawx3.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。

  • 相关阅读:
    Android——监听事件OnLongClickListener
    Android——edittext的几个属性
    源码安装Postgresql9.4.1
    添加产品唯一性限制以后,复制按钮不能使用
    [转载]git 忽略某些文件
    grep 命令搜索 带空格的字符
    听故事学会计笔记
    利用Python的三元表达式解决Odoo中工资条中城镇、农村保险的问题
    8.0 Qweb 报表编写步骤
    Buff系统
  • 原文地址:https://www.cnblogs.com/striver-zhu/p/4652203.html
Copyright © 2011-2022 走看看