QT应用编程: windows下QT调用COM组件并集成到QT界面

简介: QT应用编程: windows下QT调用COM组件并集成到QT界面

一、环境介绍

操作系统: win10 64位


QT版本: 5.12.6


Visual Studio IDE 版本:  2017


二、创建COM组件

为了方便测试,我这里使用QT来创建COM组件,再由QT自己调用。 理论上任何语言生成的COM组件调用流程应该都是一样的。


QT创建COM的方法看这里:


(1) VS2017下使用QT生成COM组件:      https://blog.csdn.net/xiaolong1126626497/article/details/112556866


(2) QtCreate下生成COM组件:  https://blog.csdn.net/xiaolong1126626497/article/details/112550412


本次文章是接着上一篇文章写的,创建的COM组件可以参考上一篇文章:  


QT应用编程: windows下QT调用COM组件:  https://blog.csdn.net/xiaolong1126626497/article/details/112978956


三、QtCreate里创建工程调用COM组件完成界面开发

上一篇文章里介绍了在QtCreate里使用QAxObject调用COM组件,并完成函数接口调用;如果调用的COM组件是带界面的程序,并需要集成到当前QT程序中,就需要使用QAxWidget实现。


3.1 方式1

直接在工程里写代码,new一个QAxWidget并添加到布局器即可。代码里都有注释。


这里的工程采用的上一篇文章的工程 ,链接: https://blog.csdn.net/xiaolong1126626497/article/details/112978956

    QAxWidget *ax_widget = new QAxWidget(nullptr,nullptr);
    ax_widget->resize(500,500);
    //指定调用的COM组件类ID,这个ID要填正确.
    ax_widget->setControl(QString::fromUtf8("{fe8bb3a1-998e-4318-b4ee-4263a1cc06a2}"));
    //导出支持调用的函数接口
    QString DOC = ax_widget->generateDocumentation();
    QFile outFile("com_function.html");
    outFile.open(QIODevice ::ReadWrite|QIODevice ::Text);
    QTextStream TS(&outFile);
    TS<<DOC<<endl;
    //调用com组件开放的函数:  查看COM组件版本号
    QString result;
    result=ax_widget->dynamicCall("VersionNumber()").toString();
    qDebug()<<"插件的版本号:"<<result;
    //调用com组件开放的函数: 加载视频文件
    QVariantList params;
    params={100,100};
    int val=ax_widget->dynamicCall("sum(int,int)", params).toInt();
    qDebug()<<"求和运算:"<<val;
    //新建布局
    QHBoxLayout *layout = new QHBoxLayout;
    //添加ax_widget到布局器
    layout->addWidget(ax_widget);
    //设置当前页面布局
    this->setLayout(layout);

image.png

代码写完之后,直接运行即可。  注意:  运行代码之前,COM组件一定要先注册才能调用。

image.png

3.2 方式2

为了方便界面设计,这可以直接在UI设计师界面,拖一个axWidget控件出来。

image.png

image.png

注意:  下面图片里,右键选择的COM组件,必须要先注册成功之后才能看到。 

image.png

image.png

image.png

代码块:

#include "com_widget.h"
#include "ui_com_widget.h"
com_widget::com_widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::com_widget)
{
    ui->setupUi(this);
    QAxWidget *ax_widget = ui->axWidget;
    //指定调用的COM组件类ID,这个ID要填正确.
    ax_widget->setControl(QString::fromUtf8("{fe8bb3a1-998e-4318-b4ee-4263a1cc06a2}"));
    //导出支持调用的函数接口
    QString DOC = ax_widget->generateDocumentation();
    QFile outFile("com_function.html");
    outFile.open(QIODevice ::ReadWrite|QIODevice ::Text);
    QTextStream TS(&outFile);
    TS<<DOC<<endl;
    //调用com组件开放的函数:  查看COM组件版本号
    QString result;
    result=ax_widget->dynamicCall("VersionNumber()").toString();
    qDebug()<<"插件的版本号:"<<result;
    //调用com组件开放的函数: 加载视频文件
    QVariantList params;
    params={100,100};
    int val=ax_widget->dynamicCall("sum(int,int)", params).toInt();
    qDebug()<<"求和运算:"<<val;
}
com_widget::~com_widget()
{
    delete ui;
}

image.png

目录
相关文章
|
1月前
|
监控 编译器 Windows
Qt5实现Windows平台串口通信
Qt5实现Windows平台串口通信
|
2月前
|
人工智能 Java API
Java与大模型集成实战:构建智能Java应用的新范式
随着大型语言模型(LLM)的API化,将其强大的自然语言处理能力集成到现有Java应用中已成为提升应用智能水平的关键路径。本文旨在为Java开发者提供一份实用的集成指南。我们将深入探讨如何使用Spring Boot 3框架,通过HTTP客户端与OpenAI GPT(或兼容API)进行高效、安全的交互。内容涵盖项目依赖配置、异步非阻塞的API调用、请求与响应的结构化处理、异常管理以及一些面向生产环境的最佳实践,并附带完整的代码示例,助您快速将AI能力融入Java生态。
474 12
|
3月前
|
人工智能 运维 负载均衡
F5发布业界首创集成式应用交付与安全平台,开启ADC 3.0新时代
F5发布业界首创集成式应用交付与安全平台,开启ADC 3.0新时代
123 0
|
3月前
|
人工智能 自然语言处理 分布式计算
AI 驱动传统 Java 应用集成的关键技术与实战应用指南
本文探讨了如何将AI技术与传统Java应用集成,助力企业实现数字化转型。内容涵盖DJL、Deeplearning4j等主流AI框架选择,技术融合方案,模型部署策略,以及智能客服、财务审核、设备诊断等实战应用案例,全面解析Java系统如何通过AI实现智能化升级与效率提升。
333 0
|
5月前
|
机器学习/深度学习 数据采集 存储
朴素贝叶斯处理混合数据类型,基于投票与堆叠集成的系统化方法理论基础与实践应用
本文探讨了朴素贝叶斯算法在处理混合数据类型中的应用,通过投票和堆叠集成方法构建分类框架。实验基于电信客户流失数据集,验证了该方法的有效性。文章详细分析了算法的数学理论基础、条件独立性假设及参数估计方法,并针对二元、类别、多项式和高斯分布特征设计专门化流水线。实验结果表明,集成学习显著提升了分类性能,但也存在特征分类自动化程度低和计算开销大的局限性。作者还探讨了特征工程、深度学习等替代方案,为未来研究提供了方向。(239字)
200 5
朴素贝叶斯处理混合数据类型,基于投票与堆叠集成的系统化方法理论基础与实践应用
|
9月前
|
前端开发 安全 开发工具
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
604 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
5月前
|
缓存 前端开发 定位技术
通义灵码2.5智能体模式实战———集成高德MCP 10分钟生成周边服务地图应用
通义灵码2.5智能体模式结合高德MCP服务,实现快速构建周边服务地图应用。通过自然语言需求输入,智能体自动分解任务并生成完整代码,涵盖前端界面、API集成与数据处理,10分钟内即可完成传统开发需数小时的工作,大幅提升开发效率。
349 0
|
10月前
|
机器人 应用服务中间件 API
轻松集成私有化部署Dify文本生成型应用
Dify 是一款开源的大语言模型应用开发平台,融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者能快速搭建生产级生成式 AI 应用。通过阿里云计算巢,用户可以一键部署 Dify 社区版,享受独享的计算和网络资源,并无代码完成钉钉、企业微信等平台的应用集成。本文将详细介绍如何部署 Dify 并将其集成到钉钉群聊机器人和企业微信中,帮助您轻松实现 AI 应用的定义与数据运营,提升工作效率。
5037 65
轻松集成私有化部署Dify文本生成型应用
|
10月前
|
人工智能 数据可视化 开发者
FlowiseAI:34K Star!集成多种模型和100+组件的 LLM 应用低代码开发平台,拖拽组件轻松构建程序
FlowiseAI 是一款开源的低代码工具,通过拖拽可视化组件,用户可以快速构建自定义的 LLM 应用程序,支持多模型集成和记忆功能。
870 14
FlowiseAI:34K Star!集成多种模型和100+组件的 LLM 应用低代码开发平台,拖拽组件轻松构建程序
|
8月前
|
SQL 弹性计算 DataWorks
Flink CDC 在阿里云 DataWorks 数据集成入湖场景的应用实践
Flink CDC 在阿里云 DataWorks 数据集成入湖场景的应用实践
406 6

推荐镜像

更多
  • qt