官方的说明:
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);

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信