efactive java,Qt开发Activex笔记(二):Qt调用Qt开发的Activex控件

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

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

红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)

Qt开发专栏:开发技术

上一篇:《Qt开发Activex笔记(一):环境搭建、基础开发流程和演示Demo》 下一篇:敬请期待...

前言

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

Demo

5710b316dba615302c1ea135b881b5e4.png

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

a7edd4de046e058d567f6d9cd0ef8b8b.png

步骤二:确认activeQt控件的clsid

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

2b133be1b48da314a21e68764e5dd00b.png

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

步骤三:使用QAxWidget调用

QAxWidget *pAxWidget = new QAxWidget();

pAxWidget->resize(400, 320);

pAxWidget->setControl("2F12BFB8-137D-4DC2-9A93-634EFE5A6DFC");

pAxWidget->show();

源码

#include

#include

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》 下一篇:敬请期待...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值