Qt开发Activex笔记(二):Qt调用Qt开发的Activex控件
若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/113789693
长期持续带来更多项目与技术分享,咨询请加QQ:21497936、微信:yangsir198808
上一篇:《Qt开发Activex笔记(一):环境搭建、基础开发流程和演示Demo》
下一篇:敬请期待…
前言
开发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笔记(一):环境搭建、基础开发流程和演示Demo》
下一篇:敬请期待…
Qt开发Activex笔记(二):Qt调用Qt开发的Activex控件的更多相关文章
- 【Android开发学习笔记】【第四课】基础控件的学习
通过一个简单的例子来学习下面几种控件: 1.TextView:简单的文本显示控件 2.EditText:可以编辑的文本框 3.Button:按钮 4.Menu:这里指的是系统的Menu 5.Toast ...
- 《MFC游戏开发》笔记二 建立工程、调整窗口
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9300383 作者:七十一雾央 新浪微博:http:/ ...
- 解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件
解决SurfaceView调用setZOrderOnTop(true)遮挡其他控件的问题 http://marller.blog.51cto.com/8699646/1762028 FAQ: Surf ...
- 【VS开发】单文档中往视图中加入控件
[VS开发]单文档中往视图中加入控件 标签(空格分隔): [VS开发] 分隔视图的但文档窗口,要显示控件,推荐使用CFormView或者CCtrlView,前者和对话框的做法一致. 在MainFram ...
- MFC/QT 学习笔记(四)——MFC基于对话框学习控件(上)
新建项目->MFC模板->MFC应用程序->应用程序类型:基于对话框->...OK 解决方案资源管理器->资源文件->xxx.rc->进入:资源视图-> ...
- 软件开发学习笔记 <二>软件开发模型、Up、Rup、敏捷Up
软件开发过程(process) 是一个将用户需求转化为软件系统所需要的活动的集合. 软件生命周期(SDLC,Software Devlopment Life Cycle) 软件从孕育.诞生.成长.成熟 ...
- [SharePoint2010开发入门经典]二、开始SPS2010开发
本章概要: 1.了解SPS2010开发要素(包括工具,平台服务,开发选项) 2.熟悉主要开发工具和部署方案 3.安装.配置.简单开发案例 4.理解网站级别的安全设置
- JS调用Android、Ios原生控件
在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...
- JS调用Delphi编写的OCX控件
原文:http://www.mamicode.com/info-detail-471283.html 一.使用Delphi XE2编写OCX控件 生成OCX工程: 1.File-New-Other,在 ...
- 深入理解MVC C#+HtmlAgilityPack+Dapper走一波爬虫 StackExchange.Redis 二次封装 C# WPF 用MediaElement控件实现视频循环播放 net 异步与同步
深入理解MVC MVC无人不知,可很多程序员对MVC的概念的理解似乎有误,换言之他们一直在错用MVC,尽管即使如此软件也能被写出来,然而软件内部代码的组织方式却是不科学的,这会影响到软件的可维护性 ...
随机推荐
- TCP三次握手Linux源码解析
TCP是面向连接的协议.面向连接的传输层协议在原点和重点之间建立了一条虚拟路径,同属于一个报文的所有报文段都沿着这条虚拟路径发送,为整个报文使用一条虚拟路径能够更容易地实施确认过程以及对损伤或者丢失报 ...
- pytorch——预测值转换为概率,单层感知机
softmax函数,可以将算出来的预测值转换成0-1之间的概率形式 导数的形式 import torch import torch.nn.functional as F x=torch.tensor( ...
- 并发编程常用工具类(二) SymaPhore实现线程池
1.symaPhore简介 symaphore(信号量)用来控制同时访问某个资源的线程数量,一般用在并发流量控制.个人对它的理解相当于是接待室每次只能接待固定数量的人,当达到最高接待数的时候,其他人就 ...
- Convert a string into an ArrayBuffer
https://github.com/mdn/dom-examples/blob/master/web-crypto/import-key/spki.js How to convert ArrayBu ...
- Redis击穿、穿透、雪崩产生原因以及解决思路
击穿 大家都知道,计算机的瓶颈之一就是IO,为了解决内存与磁盘速度不匹配的问题,产生了缓存,将一些热点数据放在内存中,随用随取,降低连接到数据库的请求链接,避免数据库挂掉.需要注意的是,无论是击穿还是 ...
- 使用jiffies的时间比较函数time_after、time_before
1. jiffies简介 首先,操作系统有个系统专用定时器(system timer),俗称滴答定时器,或者系统心跳. 全局变量jiffies取值为自操作系统启动以来的时钟滴答的数目,在头文件< ...
- SpringMVC 通过commons-fileupload实现文件上传
目录 配置 web.xml SpringMVC配置文件 applicationContext.xml 文件上传 Controller 上传实现一 上传实现二 测试 依赖 配置 web.xml < ...
- 反向传播(Back Propagation)
反向传播(Back Propagation) 通常在设计好一个神经网络后,参数的数量可能会达到百万级别.而我们利用梯度下降去跟新参数的过程如(1).但是在计算百万级别的参数时,需要一种有效计算梯度的方 ...
- JavaWeb——EL及JSTL学习总结
什么是EL表达式 为什么需要EL EL的主要作用 EL的语法 EL的开发步骤 EL实例练习 EL中的运算符 EL表达式显示内容的特点 EL的特点 EL隐式对象 EL隐式对象介绍 隐式对象实例练习 什么 ...
- MapReduce编程练习(三),按要求不同文件名输出结果
问题:按要求文件名输出结果,比如这里我要求对一个输入文件中的WARN,INFO,ERROR,的信息项进行分析,并分别输入到对应的以WARN,INFO.ERROR和OTHER开头的结果文件中,其中结果文 ...