Qt打开Word、Excel和PPT总结

(1)使用应用内嵌显示文件。

实现方式:利用QProcess类,启动第三方程序,获得窗口句柄后,显示到控件里面。

缺陷:启动第三方程序的时候,需要拿到程序的安装路径。每个电脑程序的安装路径不一样,打开外部应用的路径不一样,不符合要求。

(2)使用QAxWidget

实现方式:调用封装com组件的Active X对象,显示在界面上

缺陷:使用com组件实现,需要安装WPS或者Office,适用性低,卸载后无法使用。在打开excel的时候,显示窗口无法自适应主窗口的大小变化,使用绝对位置方式、手动布局方式和布局管理器方式都无法改变大小,存在隐藏的菜单栏占用一定的位置。打开word文件可以适应窗口,确认是com组件问题。

(3)使用库打开

实现方式:导入xlsx库,duckx库,poppler库分别显示xlsx,word和pdf

缺陷:xlsx库和duckx库仅能读取文本,公式图片等无法导出显示,不符合实际需求。xlsx库部分功能是满足的,也可以无格式导入到QtableWidget里面。pdf可以做到跟市面上的软件差不多,但是读取加密的pdf也是一个难题。

(4)内嵌IE浏览器打开文件

实现方式:使用类标识码打开IE浏览器显示文件。

缺陷:打开的时候有保存或者打开的弹窗,在绑定默认打开方式的时候,会强制使用默认软件打开。

(5)打包现成的应用软件为资源文件

商业软件需要版权,免费使用的软件Openoffice.org不能直接运行,需要安装创建相应的注册表项跟腱,否则应用程序无法使用。

  (6) 使用OpenUrl打开默认程序打开文件,内嵌

打开默认程序后,判断打开的软件,拿到窗口句柄后内嵌显示。算是方法一的改进,先是确定注册表名称,然后找到文件路径读取出来打开,使用定时器轮询窗口句柄,拿到句柄就内嵌显示到Widget上。

不同的软件需要不同的判断,具有很大的不确定性。窗口句柄的获取需要程序运行的进程Id号。

(7)使用QlacalSocket打开

暂时还没有尝试。

你可能感兴趣的:(qt,word,excel,wps,c++)