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);
activex 控件widget->setControl(QString::fromUtf8("{d27cdb6e-ae6d-11cf-96b8-444553540000}"));//设置此属性会初始化COM对象。 先前设置的任何COM对象都将关闭。
widget->dynamicCall("LoadMovie(long,string)", 0, swfPath);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论