QT之QAxWidget插件使用详解

官方的说明:
QAxWidget类是一个包装ActiveX控件的QWidget。
QAxWidget可以实例化为空对象,它应该包含ActiveX控件的名称,或者使用指向ActiveX控件的现有接口指针。仅使用QAxBase支持的数据类型的ActiveX控件的属性,方法和事件可用作Qt属性,插槽和信号。基类QAxBase提供了一个API,可以通过IUnknown指针直接访问ActiveX。
QAxWidget是一个QWidget,大部分都可以这样使用,例如它可以在窗口小部件层次结构和布局中组织,也可以充当事件过滤器。标准小部件属性,例如支持启用,但它依赖于ActiveX控件来实现对环境属性的支持,例如调色板或字体。 QAxWidget尝试提供必要的提示。
但是,您无法重新实现特定于Qt的事件处理程序,如mousePressEvent或keyPressEvent,并期望可靠地调用它们。嵌入式控件完全覆盖了QAxWidget,通常处理用户界面本身。使用特定于控件的API(即监听控件的信号),或使用标准的COM技术,如窗口过程子类。
QAxWidget还从QAxBase继承了大部分与ActiveX相关的功能,特别是dynamicCall()和querySubObject()。
警告:您可以继承QAxWidget,但不能在子类中使用Q_OBJECT宏(生成的moc文件将无法编译),因此您无法添加更多信号,插槽或属性。此限制是由运行时生成的元对象信息引起的。要解决此问题,请将QAxWidget聚合为QObject子类的成员。

CONFIG  += qaxcontainer

Qt直接支持ActiveX对象,所以在QT中可以直接使用QAxWidget,也就是窗口控件对象。例如word,excel,powerpoint,pdf,flash等。

对于doc,excel,ppt的文档格式可以直接将文件路径作为控件进行设置

QAxWidget->setControl(“E:/test.doc”);直接会加载word应用打开doc文档,其他的微软格式也是这样的。如果不是微软的标准格式的话,那么你需要从控件列表中进行选择,或则从控件的注册表中进行选择。
QString swfPath = qApp->applicationDirPath() + "/swf/player.swf";
widget = new QAxWidget(ui->widget);
widget->setControl(QString::fromUtf8("{d27cdb6e-ae6d-11cf-96b8-444553540000}"));//设置此属性会初始化COM对象。 先前设置的任何COM对象都将关闭。
widget->dynamicCall("LoadMovie(long,string)", 0, swfPath);

  • 6
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值