若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/113789693

长期持续带来更多项目与技术分享,咨询请加QQ:21497936、微信:yangsir198808

 

前言

  开发Activex控件,以供其他应用程序调用,本篇章讲解Qt调用Activex控件,不限于Qt开发的Activex控件。

 

Demo

  

 

QAxWidget

概述

  QAxWidget类是包装ActiveX控件的QWidget。
  QAxWidget可以实例化为空对象,带有它应该包装的ActiveX控件的名称,或者带有指向ActiveX控件的现有接口指针。ActiveX控件的属性、方法和事件仅使用QAxBase支持的数据类型,可以作为Qt属性、插槽和信号使用。基类QAxBase提供了一个API,可以通过IUnknown指针直接访问ActiveX。
  QAxWidget是一个QWidget,通常可以这样使用,例如,它可以组织在一个widget层次结构和布局中,或者充当一个事件过滤器。支持标准小部件属性,例如enabled,但它依赖于ActiveX控件来实现对环境属性(例如palete或font)的支持。QAxWidget试图提供必要的提示。
  但是,不能重新实现特定于Qt的事件处理程序,如mousePressEvent或keyPressEvent,并期望可靠地调用它们。嵌入式控件完全覆盖QAxWidget,通常处理用户界面本身。使用特定于控件的API(即侦听控件的信号),或使用标准COM技术,如window过程子类化。
  QAxWidget还从QAxBase继承了大部分与ActiveX相关的功能,特别是dynamicCall()和querySubObject()。
  警告:可以将QAxWidget子类化,但不能在子类中使用Q_OBJECT宏(生成的moc文件将不会编译),因此无法添加更多信号、插槽或属性。这种限制是由于运行时生成的元对象信息造成的。要解决此问题,请将QAxWidget聚合为QObject子类的成员。

 

Qt调用Activex方法

步骤一:注册activex控件

  运行之前先要注册,使用Qt下自带的idc注册一下。

idc -regserver activeHelloWorldDemo.dll

  

步骤二:确认activeQt控件的clsid

  查看一下,打开注册表并搜索一下,确认clsid,如下图:
  

"2F12BFB8-137D-4DC2-9A93-634EFE5A6DFC"

步骤三:使用QAxWidget调用

QAxWidget *pAxWidget = new QAxWidget();
pAxWidget->resize(400, 320);
pAxWidget->setControl("2F12BFB8-137D-4DC2-9A93-634EFE5A6DFC");
pAxWidget->show();
 

源码

#include <QApplication>
#include <QAxWidget> int main(int argc, char *argv[])
{
QApplication a(argc, argv); QAxWidget *pAxWidget = new QAxWidget();
pAxWidget->resize(400, 320);
pAxWidget->setControl("2F12BFB8-137D-4DC2-9A93-634EFE5A6DFC");
pAxWidget->show(); return a.exec();
}
 

Qt开发Activex笔记(二):Qt调用Qt开发的Activex控件的更多相关文章

  1. 【Android开发学习笔记】【第四课】基础控件的学习

    通过一个简单的例子来学习下面几种控件: 1.TextView:简单的文本显示控件 2.EditText:可以编辑的文本框 3.Button:按钮 4.Menu:这里指的是系统的Menu 5.Toast ...

  2. 《MFC游戏开发》笔记二 建立工程、调整窗口

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9300383 作者:七十一雾央 新浪微博:http:/ ...

  3. 解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件

    解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件的问题 http://marller.blog.51cto.com/8699646/1762028 FAQ: Surf ...

  4. 【VS开发】单文档中往视图中加入控件

    [VS开发]单文档中往视图中加入控件 标签(空格分隔): [VS开发] 分隔视图的但文档窗口,要显示控件,推荐使用CFormView或者CCtrlView,前者和对话框的做法一致. 在MainFram ...

  5. MFC/QT 学习笔记(四)——MFC基于对话框学习控件(上)

    新建项目->MFC模板->MFC应用程序->应用程序类型:基于对话框->...OK 解决方案资源管理器->资源文件->xxx.rc->进入:资源视图-> ...

  6. 软件开发学习笔记 <二>软件开发模型、Up、Rup、敏捷Up

    软件开发过程(process) 是一个将用户需求转化为软件系统所需要的活动的集合. 软件生命周期(SDLC,Software Devlopment Life Cycle) 软件从孕育.诞生.成长.成熟 ...

  7. [SharePoint2010开发入门经典]二、开始SPS2010开发

    本章概要: 1.了解SPS2010开发要素(包括工具,平台服务,开发选项) 2.熟悉主要开发工具和部署方案 3.安装.配置.简单开发案例 4.理解网站级别的安全设置

  8. JS调用Android、Ios原生控件

    在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...

  9. JS调用Delphi编写的OCX控件

    原文:http://www.mamicode.com/info-detail-471283.html 一.使用Delphi XE2编写OCX控件 生成OCX工程: 1.File-New-Other,在 ...

  10. 深入理解MVC C#+HtmlAgilityPack+Dapper走一波爬虫 StackExchange.Redis 二次封装 C# WPF 用MediaElement控件实现视频循环播放 net 异步与同步

    深入理解MVC   MVC无人不知,可很多程序员对MVC的概念的理解似乎有误,换言之他们一直在错用MVC,尽管即使如此软件也能被写出来,然而软件内部代码的组织方式却是不科学的,这会影响到软件的可维护性 ...

随机推荐

  1. Lakehouse: 统一数据仓库和高级分析的新一代开放平台

    1. 摘要 数仓架构在未来一段时间内会逐渐消亡,会被一种新的Lakehouse架构取代,该架构主要有如下特性 基于开放的数据格式,如Parquet: 机器学习和数据科学将被作为头等公民支持: 提供卓越 ...

  2. 动态改变div标签中的内容

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. Netty服务端Server代码说明

    本文是简单的Netty启动服务端代码理解笔记 public class MyServer { public static void main(String[] args) throws Excepti ...

  4. 关于BI测试

    BI测试: BI是从数据接入.数据准备.数据分析.数据可视化到数bai据分发应用的一系列过程,目的是为了辅助企业高效决策.而报表虽然最终也实现了数据可视化,但是对于数据分析的维度.深度.颗粒度.实时性 ...

  5. (Oracle)看懂Oracle执行计划(转载)

    最近一直在跟Oracle打交道,从最初的一脸懵逼到现在的略有所知,也来总结一下自己最近所学,不定时更新ing- 一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问 ...

  6. (Sql Server)存储过程(转载)

    SQL Server 存储过程 Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这 ...

  7. 游戏寻路A*算法

    A*算法是一种启发式的BFS,目的就是找到到达目标位置的最短路径.启发式函数如下: f(x) = g(x) + h(x) g(x)是对出发点到达当前点距离的估约,h(x)是当前点到终点距离的估约.算法 ...

  8. tricks - 实现

    笔记总页面 目录 负下标 动态开点 花括号 负下标 有的时候我们需要存一些负的东西,比如我就只要一个 \(-1\),或者说值域是 \([-10^6,10^6]\),而我懒得写平移 (写平移不仅麻烦,而 ...

  9. (十三)整合 SpringSecurity 框架,实现用户权限管理

    整合 SpringSecurity 框架,实现用户权限管理 1.Security简介 1.1 基础概念 1.2 核心API解读 2.SpringBoot整合SpringSecurity 2.1 流程描 ...

  10. Cisco交换机管理员配置

    conf tservice timestamps debug datetime msec localtime yearservice timestamps log datetime msec loca ...