Qt界面嵌入word文档qaxwidget dsoframer已经过时

现在有一项目需求,需要用qt5嵌入word2007文档。
通过查询,可以使用qaxwidget读取word文档,但是不能保留源格式,尤其是图片的读取。查了好久,根本没有什么头绪,后来查了可以用dsoframer,虽然开源免费,但是早已停止更新,而且不支持x64应用程序,虽然能注册成功,但是调用提示“未注册的类”。
还有其他控件,好像收费,未测试。
但是后来发现,其实qaxwidget就可以嵌入,很简单
qt嵌入word
嵌入后的效果如图所示:
嵌入word后的效果
可能word不是居中显示,但是不影响效果,至少功能是我要的功能。只是,只读方式显示还没有解决。
记录一下,你们以后别花时间了,也让自己不再花时间在这上面。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
Qt中,我们可以使用QAxWidget来实现将Word文档嵌入到窗体中的功能。QAxWidget是一个可以用来在Qt窗口嵌入ActiveX控件的小部件,而Word就是一个ActiveX控件。 首先,我们需要在项目的.pro文件中添加如下代码: ``` QT += axcontainer ``` 这是为了包含Qt的ActiveX容器模块。 接下来,我们可以在窗口中添加一个QAxWidget控件,用于展示Word文档。我们可以在窗口的构造函数中添加如下代码: ``` QAxWidget *wordWidget = new QAxWidget(this); wordWidget->setControl("Word.Application"); wordWidget->setProperty("DisplayAlerts", false); wordWidget->dynamicCall("SetVisible(bool)", false); ``` 这代码创建了一个新的QAxWidget,并设置它的控件为Word.Application,同时关闭了Word的警告信息和隐藏了Word窗口。 接着,我们可以使用QAxObject类打开文档并将其显示在控件中。以下是打开本地Word文档并显示在窗口中的代码: ``` QAxObject *documents = wordWidget->querySubObject("Documents"); QAxObject *document = documents->querySubObject("Open(\"C:/Users/User/Documents/MyWordDocument.docx\")"); QAxObject *window = wordWidget->querySubObject("ActiveWindow"); QAxObject *selection = window->querySubObject("Selection"); selection->dynamicCall("WholeStory()"); selection->dynamicCall("Copy()"); wordWidget->dynamicCall("Paste()"); ``` 在此代码中,我们首先使用querySubObject()函数获取Word的Documents、ActiveWindow和Selection对象,然后使用Open方法打开Word文档,使用WholeStory()函数选择整个文档内容,使用Copy()函数将内容复制到剪贴板,最后使用WordWidget的Paste()函数将内容粘贴到控件中。 当我们运行程序时,我们将看到Word文档嵌入到了窗口中,并且可以进行编辑操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值