持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情
这几日闲来无事看到了Qt可以直接展示word文档、Excel文档,并实现数据处理功能,就想来学习下,顺便将我的学习新的纪录下来。
当我刚开始做MFC项目时,其实已经用到了在程序中打开文档的功能,但是MFC对于有些文件的打开实在是太麻烦了,当初只是用了进程的方式打开。
现在,恰好项目不紧张,我就想来学习下Qt环境下如何展示Ofiice文件。
下面,我就对两种不同的环境进行说明,有需要的同学们可以自行选择,其它的方式我也无能为力了,因为开发中只涉及到了这两种方式。
1:QtCreator环境操作Office
第一步:配置需要的环境
在项目的pro文件中添加下面这句话:
QT+=axcontainer
不需要添加第三方库,直接将库配置上就可以了。
第二步:代码应用
QAxWidget *mywidget = new QAxWidget("Excel.Application", ui->widgetWord);
mywidget->dynamicCall("SetVisible(bool Visible)","false"); //隐藏不显示office窗体
mywidget->setProperty("DisplayAlerts", false); //屏蔽office的警告消息框
QRectF rectWidget = ui->widgetWord->geometry();
mywidget->setGeometry(rectWidget.x(), rectWidget.y(), rectWidget.width(), rectWidget.height());
mywidget->setControl("F:\\123.xlsx");
mywidget->show();
直接粘贴到程序中就可以展示中需要加载的excel表格了。
在Qt中可以支持适时地显示和预览Office文档的内容,主要是通过我们今天使用的控件QAxWidget对象来实现的。
实现机制:
将桌面程序界面上的某个Qt控件重定义包装用于显示Office文档的QAxWidget对象实例,该实例与用户程序中所启动的特定Office进行相关联,就具备了显示外部文档的增强功能。
本质上就是用Qt的组件调用外部的Microsoft Office组件,实际上在后台执行功能的仍然是Microsoft Office的COM组件。
代码讲解:
在使用Excel表格时,首先要创建Excel进行,将展示的内容绑定到Qt的控件上进行展示,可以用QLabel控件也可以使用QWidget控件。
QAxWidget *mywidget = new QAxWidget("Excel.Application", ui->widgetWord);
显示效果如下:
2:Qt+VS混搭环境操作Office
代码实现方式与QtCreator中的一致,唯一的区别就是对插件的配置。
那么,在VS环境中使用Qt的组件该如何配置呢?
图片中的ActiveQt container == axcontainer
大家记住一定不要记混了,有些看到属性配置没有跟QtCreator中一致的关键词就认为没有,其实不是,只是换了一个名称而已。
除此属性配置之外,其余与QtCreator使用完全一致。这里我也就不再详细说明了。
我是中国好公民st,一名C++开发程序猿~