• 14087阅读
  • 14回复

QT里如何用word插件创建一个新的文档? [复制链接]

上一主题 下一主题
离线darlings
 

只看楼主 倒序阅读 楼主  发表于: 2009-12-03
  1.     QAxWidget *wordActive = new QAxWidget;
  2.     wordActive->setControl("Word.Application");
  3.     QAxObject* newFile = wordActive->querySubObject("NewDocument");
  4.     if (!newFile)
  5.     {
  6.            return;
  7.     }


我这样写的好像不行啊,请做过的、会做的帮忙指正一下吧,谢谢了。
离线dbzhang800

只看该作者 1楼 发表于: 2009-12-03
不清楚你生成 word 文档的目的是什么,如果不是非 doc 不可的话,odt 可能是更好的选择

Qt 已经内置了对OpenDocument ( odf )的支持(所有平台下可用)
MS Office 2007 从SP2 开始,已经支持OpenDocument

作为Office文档的国际标准(之一), odf 应该是个好的选择吧
离线darlings

只看该作者 2楼 发表于: 2009-12-03
机器是用的OFFICE 2003,用word去打开一个新文档,然后写入新内容,用它的另存为接口保存成网页。
离线dbzhang800

只看该作者 3楼 发表于: 2009-12-03
html 也是  QTextDocumentWriter 内置支持的格式

Format    Description
plaintext    Plain text
HTML    HyperText Markup Language
ODF    OpenDocument Format
离线darlings

只看该作者 4楼 发表于: 2009-12-03
是要先去读一个DOC,然后解析出来放到一个新的DOC里保存出来。。。
现在知道怎么读了,但是不知道怎么新建一个去写。。。
能给点帮助么?
离线dbzhang800

只看该作者 5楼 发表于: 2009-12-03
这个你可以去windows编程或VC编程相关的论坛看看, Qt 社区 activex 相关的东西不多。
离线darlings

只看该作者 6楼 发表于: 2009-12-03
VC里用ACTIVEX很简单,会自动生成一个类,在QT里用起来就麻烦多了。
离线dbzhang800

只看该作者 7楼 发表于: 2009-12-03
引用第6楼darlings于2009-12-03 11:30发表的  :
VC里用ACTIVEX很简单,会自动生成一个类,在QT里用起来就麻烦多了。


如果说这个的话,Qt 也可以生成一个包装类,Qt 自带的例子中就有。
离线darlings

只看该作者 8楼 发表于: 2009-12-03
那是不是得用QT的那个designer?
离线dbzhang800

只看该作者 9楼 发表于: 2009-12-03
引用第8楼darlings于2009-12-03 12:08发表的  :
那是不是得用QT的那个designer?


designer 是生成 ui的工具

activex 相关内容属于 acitveQt 模块

二者没什么联系。

如果你看过 Qt自带的例子,或稍微仔细看过ActiveQt的manual,你应该能找到

The dumpcpp Tool (ActiveQt)

The dumpcpp tool generates a C++ namespace for a type library.


同 uic moc 等工具一样,你可以手动调用,可以通过 pro 文件让 qmake 自动处理

题外,
用 AcitveX 的话,多去 Windows编程或VC编程的论坛可能更有帮助,他们对com编程更有经验,据说有com经验的话用activeQt会感到非常简单。
离线darlings

只看该作者 10楼 发表于: 2009-12-03
QAxWidget  QAxObject
官方文档里好像就是用的这种方法啊。这样的话还是不知道怎么去使用word.application里的接口啊。
离线dbzhang800

只看该作者 11楼 发表于: 2009-12-03
我自己对ActiveX和COM编程几乎一窍不通,所以我也不清楚你是在 COM编程、ActiveX、ActiveQt这个三个层次上哪一个上面有困难。
离线darlings

只看该作者 12楼 发表于: 2009-12-03
引用第11楼dbzhang800于2009-12-03 13:23发表的  :
我自己对ActiveX和COM编程几乎一窍不通,所以我也不清楚你是在 COM编程、ActiveX、ActiveQt这个三个层次上哪一个上面有困难。

嘿嘿,我自己找了个接口列表猜,结果猜对了,现在可以打开新文档去写了。谢谢哦。
我昨天问过一个QT里字符串的问题,一会顶上来你帮我看看吧。
离线dbzhang800

只看该作者 13楼 发表于: 2009-12-03
引用第12楼darlings于2009-12-03 14:11发表的  :
嘿嘿,我自己找了个接口列表猜,结果猜对了,现在可以打开新文档去写了。谢谢哦。
我昨天问过一个QT里字符串的问题,一会顶上来你帮我看看吧。


不使用 dumpcpp 生成接口类的话
也利用 acitveQt 也可以提取并生成接口列表(生成一个html文件), 像下面这个样子

MintController Control for MintMT Build 5224 Reference

The MintController Control for MintMT Build 5224 COM object is a QAxWidget with the CLSID {8E71D9DB-2AC1-4C5B-9DFA-2B5DBDFE668A}.
Interfaces

    * _DMintControllerCtrl

Event Interfaces

    * _DMintControllerEvents
    * IPropertyNotifySink

Public Slots:

    * double ADC(int nChannel);
    * double ADCDeadband(int nChannel);
    * double ADCDeadbandHysteresis(int nChannel);
    * double ADCDeadbandOffset(int nChannel);
    * int ADCError(int nAxis);
    * int ADCErrorMode(int nAxis);
    * double ADCGain(int nChannel);
    * double ADCMax(int nChannel);
    * double ADCMin(int nChannel);
    * int ADCMode(int nChannel);
    * int ADCMonitor(int nAxis);
    * double ADCOffset(int nChannel);
    * double ADCTimeConstant(int nChannel);
.....
离线darlings

只看该作者 14楼 发表于: 2009-12-03
引用第13楼dbzhang800于2009-12-03 14:22发表的  :

这个我也看不懂,我才刚学QT2,3天了。主要是没有像MSDN那样强大的工具,学起来比较费劲啊。
快速回复
限100 字节
 
上一个 下一个