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

目录
相关文章
|
NoSQL Redis 数据安全/隐私保护
Redis 最流行的图形化界面下载及使用超详细教程(带安装包)! redis windows客户端下载
文章提供了Redis最流行的图形化界面工具Another Redis Desktop Manager的下载及使用教程,包括如何下载、解压、连接Redis服务器以及使用控制台和查看数据类型详细信息。
7183 6
Redis 最流行的图形化界面下载及使用超详细教程(带安装包)! redis windows客户端下载
|
NoSQL Redis 数据库
Redis 图形化界面下载及使用超详细教程(带安装包)! redis windows下客户端下载
文章提供了Redis图形化界面工具的下载及使用教程,包括如何连接本地Redis服务器、操作键值对、查看日志和使用命令行等功能。
5002 0
Redis 图形化界面下载及使用超详细教程(带安装包)! redis windows下客户端下载
|
Windows
Windows下对于Qt中带 / 的路径的处理
Windows下对于Qt中带 / 的路径的处理
345 9
|
自然语言处理 运维 开发工具
深入探讨了 NeoVim 相较于传统 Vim 的优势,包括更好的扩展性、现代化的界面和用户体验、多语言编程支持、强大的异步处理能力、更好的协作支持、持续的更新和改进、活跃的社区以及与现代开发工具的集成
本文深入探讨了 NeoVim 相较于传统 Vim 的优势,包括更好的扩展性、现代化的界面和用户体验、多语言编程支持、强大的异步处理能力、更好的协作支持、持续的更新和改进、活跃的社区以及与现代开发工具的集成。通过命令对比,展示了两者在启动、配置、模式切换、移动编辑、搜索替换、插件管理、文件操作、窗口缓冲区管理和高级功能等方面的差异。总结部分强调了 NeoVim 在多个方面的显著优势,解释了为什么越来越多的运维人员选择 NeoVim。
1957 3
|
人工智能 JavaScript 网络安全
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。
923 1
|
Linux Apache C++
FFmpeg开发笔记(三十五)Windows环境给FFmpeg集成libsrt
该文介绍了如何在Windows环境下为FFmpeg集成SRT协议支持库libsrt。首先,需要安装Perl和Nasm,然后编译OpenSSL。接着,下载libsrt源码并使用CMake配置,生成VS工程并编译生成srt.dll和srt.lib。最后,将编译出的库文件和头文件按照特定目录结构放置,并更新环境变量,重新配置启用libsrt的FFmpeg并进行编译安装。该过程有助于优化直播推流的性能,减少卡顿问题。
919 2
FFmpeg开发笔记(三十五)Windows环境给FFmpeg集成libsrt
|
算法 Linux Windows
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
在Windows环境下为FFmpeg集成字幕渲染库libass涉及多个步骤,包括安装freetype、libxml2、gperf、fontconfig、fribidi、harfbuzz和libass。每个库的安装都需要下载源码、配置、编译和安装,并更新PKG_CONFIG_PATH环境变量。最后,重新配置并编译FFmpeg以启用libass及相关依赖。完成上述步骤后,通过`ffmpeg -version`确认libass已成功集成。
1238 1
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
|
缓存 网络协议 Linux
碎片技能:在 Windows 的任意目录一键快捷进入 CMD 命令行界面
在Windows 10/11中,SaaS服务商常需使用命令行,如PowerShell或CMD。本文介绍了如何进入DOS命令行:通过“开始”菜单→“运行”→输入“cmd”,然后确认。此外,还展示了如何在任意目录快速启动DOS命令行,只需右键点击并选择相应菜单项。提供两种实现方法:一是导入注册表文件,二是使用名为ContextMenuManager的优化软件。建议使用软件方法,易于添加和删除菜单项。
1299 1
碎片技能:在 Windows 的任意目录一键快捷进入 CMD 命令行界面
|
编解码 Windows
FFmpeg开发笔记(二十九)Windows环境给FFmpeg集成libxvid
XviD是开源MPEG-4视频编码器,与DivX相似但后者非开源。早期MP4常使用XviD或DivX编码,现已被H.264取代。在Windows上集成FFmpeg的XviD编解码库libxvid,需访问<https://labs.xvid.com/source/>下载源码,解压后在MSYS环境中配置、编译和安装。之后重新配置FFmpeg,启用libxvid并编译安装。详细步骤包括configure命令、make和make install。成功后,通过`ffmpeg -version`检查是否启用libxvid。更多音视频开发技术可参考《FFmpeg开发实战:从零基础到短视频上线》。
663 0
FFmpeg开发笔记(二十九)Windows环境给FFmpeg集成libxvid
|
Windows 安全 C++
Qt字符串类应用与常用基本数据类型
Qt字符串类应用与常用基本数据类型

推荐镜像

更多
  • qt