案例分享:Qt的PPT播放器

简介: 案例分享:Qt的PPT播放器

若该文为原创文章,转载请注明原文出处

本文章博客地址:https://blog.csdn.net/qq21497936/article/details/95329108

各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究

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

合作案例专栏:案例分享(体验Demo可下载,只定制)

 

需求

       软件中需要打开ppt操作。

 

Demo下载

v2.0.0下载地址:https://download.csdn.net/download/qq21497936/12057333

      v1.3.0下载地址:https://download.csdn.net/download/qq21497936/11316844

 

Demo演示

ppt文件音视频无法播放是因为制作ppt时,插入只是插入了连接;(该特性是office本身决定的)

pptx文件音视频可以播放是因为制作pptx时,插入是将资源都插入进去;(该特性是office本身决定的)

v2.0.0的演示

       

v1.3.0的演示

       

       

 

方案选型过程

  • 方案一:Qt中使用QAxWidget和QAxObject调用com;

       测试结果:一些属性无法设置,一些函数调用会当机,且效率不高,体验不好,存在打开文件挂掉(com挂)等诸多问题。

  • 方案二:Qt使用dumpcpp反编译com;

       测试结果:反编译后的com组需要修改源码,开发起来方便一些但是同样存在方案一的问题。同时发布出去测试后,发现打开ppt会当机,系统都是win10,都装的office2016有些打开ppt就挂,且一直挂,查找定位到com组件函数自己挂,与应用无关。

  • 方案三:使用c#调用com组件,封装成dll给qt调用;

       测试结果:未开发,未测试,但是c#操作ppt是已经开发成熟了,没有研究。

  • 方案四:使用Mfc调用com组件,封装成dll给qt调用,此方案为最终选择方案。

      测试结果:com会直接生成头文件,但是com也会存在自己的指针释放问题(不通知客户),会导致当机,这部分可以从开发角度解决,同时其接口居然比Qt调用dumpcpp出来的多,在测试demo测试过程中,发现打开速度与效率以及交互体验度上,比c#和qt本身操作要好一些。

 

MFC写库给Qt调用可参考以下博客

VS2017编写MFC库以及使用Qt调用MFC库方法》:

    https://blog.csdn.net/qq21497936/article/details/95052025

 

关于安装WPS的机器

       安装WPS后会截取组件,导致调用COM失败,非应用开发原因,目前测试无法支持WPS打开文件,具体操作如下图:

     没有安装office和wps的时候,打开ppt如下图:

     

     安装WPS后:

     

     配置WPS

     

     运行应用,回到“没有安装office和wps的时候“,所以可以分析是WPS截取了office组件的id,office调用打开但是实际com组件又没有打开office组件(不存在),导致应用错误,所以,本软件目前不支持WPS。

原博主博客地址:https://blog.csdn.net/qq21497936

原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062

本文章博客地址:https://blog.csdn.net/qq21497936/article/details/95329108

 


相关文章
|
6月前
|
C++
基于Qt的简易音乐播放器设计与实现
基于Qt的简易音乐播放器设计与实现
253 0
|
6月前
|
IDE 开发工具 C++
QT案例IDE编写 -- 创建项目
QT案例IDE编写 -- 创建项目
82 0
|
4月前
|
网络协议
Qt中的网络编程(Tcp和Udp)运用详解以及简单示范案例
Tcp和Udp是我们学习网络编程中经常接触到的两个通讯协议,在Qt也被Qt封装成了自己的库供我们调用,对于需要进行网络交互的项目中无疑是很重要的,希望这篇文章可以帮助到大家。 是关于Qt中TCP和UDP的基本使用和特点:
644 7
|
4月前
|
开发者
Qt中的事件该如何学习?(附带案例)
事件是Qt中比较重要的一部分,在初期如果理解不当学习可能会比较困难,这里提一嘴当初教我的那位老师水平是真的高,让我很轻易的就理解了事件的概念。 在平时我们见到那些界面上的某些快捷键就有可能是事件做的,例如ESC关闭窗口,Enter提交或者登录这种类似的,这也是事件的强大之处。
113 0
|
6月前
|
存储 自然语言处理
QT案例词典 -- 存储内容及遍历
QT案例词典 -- 存储内容及遍历
48 1
|
6月前
|
自然语言处理
QT案例词典 -- 释放堆区空间及查询单词
QT案例词典 -- 释放堆区空间及查询单词
44 1
|
6月前
|
编解码 IDE 开发工具
QT案例IDE编写 -- 另存为操作及编辑操作
QT案例IDE编写 -- 另存为操作及编辑操作
84 0