QAxWidget 类

The QAxWidget 类是 QWidget 用于包裹 ActiveX 控件。 更多...

头: #include <QAxWidget>
qmake: QT += axcontainer
继承: QWidget and QAxBase

公共函数

QAxWidget (QWidget * parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
QAxWidget (const QString & c , QWidget * parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
QAxWidget (IUnknown * iface , QWidget * parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
virtual ~QAxWidget () override
virtual QAxAggregated * createAggregate ()
bool doVerb (const QString & verb )

重实现公共函数

virtual void clear () override
virtual QSize minimumSizeHint () const override
virtual QSize sizeHint () const override

静态公共成员

const QMetaObject staticMetaObject

保护函数

virtual bool createHostWindow (bool initialized )
bool createHostWindow (bool initialized , const QByteArray & data )
virtual bool translateKeyEvent (int message , int keycode ) const

重实现保护函数

virtual void changeEvent (QEvent * e ) override
virtual void connectNotify (const QMetaMethod & signal ) override
virtual bool initialize (IUnknown ** ptr ) override
virtual void resizeEvent ( QResizeEvent * ) override

额外继承成员

详细描述

The QAxWidget 类是 QWidget 用于包裹 ActiveX 控件。

A QAxWidget 可以被实例化成空对象,采用它应包裹的 ActiveX 控件名称,或采用指向 ActiveX 控件的现有接口指针。ActiveX 控件的特性、方法及事件仅使用 QAxBase 支持数据类型,变为可用 Qt 特性、槽及信号。基类 QAxBase 提供 API 以直接访问 ActiveX 透过 IUnknown 指针。

QAxWidget 是 QWidget 且主要可以这样使用,如,可以按 Widget 层次结构和布局组织它,或充当事件过滤器。标准 Widget 特性,如 enabled 是支持的,但从属 ActiveX 控件以实现支持环境特性 (如:调色板或字体)。 QAxWidget 会试着提供必要提示。

不管怎样,无法重实现特定 Qt 事件处理程序像 mousePressEvent or keyPressEvent 并期望能可靠调用它们。嵌入式控件覆盖 QAxWidget 完全,且通常用于处理用户界面本身。使用特定控件 API (即:监听控件的信号),或使用标准 COM 技术 (像窗口过程子类化)。

QAxWidget 还继承了其 ActiveX 相关的大部分功能从 QAxBase ,显而易见 dynamicCall () 和 querySubObject ().

警告: 可以子类化 QAxWidget ,但无法使用 Q_OBJECT 宏在子类中 (不会编译生成的 moc 文件),所以,无法进一步添加信号、槽或特性。此局限性是由在运行时,生成的元对象信息造成的。要解决此问题,聚合 QAxWidget 作为成员对于 QObject 子类。

另请参阅 QAxBase , QAxObject , QAxScript ,和 ActiveQt 框架 .

成员函数文档编制

QAxWidget:: QAxWidget ( QWidget * parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

创建空 QAxWidget 小部件并传播 parent and f 到 QWidget 构造函数。要初始化控件,调用 setControl ().

QAxWidget:: QAxWidget (const QString & c , QWidget * parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

创建 QAxWidget 小部件并初始化 ActiveX 控件 c . parent and f 被传播给 QWidget 构造函数。

另请参阅 setControl ().

QAxWidget:: QAxWidget ( IUnknown * iface , QWidget * parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

创建 QAxWidget 包裹引用 COM 对象通过 iface . parent and f 被传播给 QWidget 构造函数。

[override virtual] QAxWidget:: ~QAxWidget ()

关闭 ActiveX 控件并销毁 QAxWidget 小部件,清理所有分配资源。

另请参阅 clear ().

[override virtual protected] void QAxWidget:: changeEvent ( QEvent * e )

重实现自 QWidget::changeEvent ().

[override virtual] void QAxWidget:: clear ()

重实现自 QAxBase::clear ().

关闭 ActiveX 控件。

[override virtual protected] void QAxWidget:: connectNotify (const QMetaMethod & signal )

重实现自 QObject::connectNotify ().

[虚拟] QAxAggregated *QAxWidget:: createAggregate ()

重实现此函数,当想为 ActiveX 控件客户端站点实现其它 COM 接口时,或者当想要提供 COM 接口的替代实现时。返回新对象为 QAxAggregated 子类。

默认实现返回 null 指针。

[virtual protected] bool QAxWidget:: createHostWindow ( bool initialized )

创建 ActiveX 控件客户端站点,并返回 true 若可以成功嵌入控件,否则返回 false。若 initialized 为 true 控件已初始化。

此函数被调用通过 initialize ()。若重实现初始化以定制实际控件的实例化,在重实现中调用此函数可以让客户端侧默认嵌入控件。创建 ActiveX 控件客户端站点,并返回 true 若可以成功嵌入控件,否则返回 false。

[protected] bool QAxWidget:: createHostWindow ( bool initialized , const QByteArray & data )

创建 ActiveX 控件客户端站点,并返回 true 若可以成功嵌入控件,否则返回 false。若 initialized 为 false 会初始化控件使用 data 。将透过 IPersistStreamInit 或 IPersistStorage 接口初始化控件。

若需要使用自定义数据初始化控件,调用此函数在重实现的 initialize ()。不会调用此函数由默认实现的 initialize ().

该函数在 Qt 4.4 引入。

bool QAxWidget:: doVerb (const QString & verb )

请求 ActiveX 控制以履行动作 verb 。可能的 verb 的返回是通过 verbs ().

函数返回 true 若对象能履行动作,否则返回 false。

该函数在 Qt 4.1 引入。

[override virtual protected] bool QAxWidget:: initialize ( IUnknown ** ptr )

重实现自 QAxBase::initialize ().

调用 QAxBase::initialize ( ptr ),并嵌入控件在此 Widget 中通过调用 createHostWindow (false) 若成功。

为在激活前初始化控件,重实现此函数并添加初始化代码先于调用 createHostWindow (true)。

该函数在 Qt 4.2 引入。

[override virtual] QSize QAxWidget:: minimumSizeHint () const

重实现自 QWidget::minimumSizeHint ().

[override virtual protected] void QAxWidget:: resizeEvent ( QResizeEvent * )

重实现自 QWidget::resizeEvent ().

[override virtual] QSize QAxWidget:: sizeHint () const

重实现自 QWidget::sizeHint ().

[virtual protected] bool QAxWidget:: translateKeyEvent ( int message , int keycode ) const

重实现此函数,以将某些关键事件传递给 ActiveX 控件。 message 是指定消息类型的窗口消息标识符 (即 WM_KEYDOWN),和 keycode 是虚拟键码 (即 VK_TAB)。

若函数返回 true,将键事件传递给 ActiveX 控件,然后处理事件或将事件传递给 Qt。

若函数返回 false,键事件的处理被忽略由 ActiveQt ,即:ActiveX 控件可以处理它 (或不处理它)。

以下情况默认实现返回 true:

WM_SYSKEYDOWN WM_SYSKEYUP WM_KEYDOWN
所有键码 VK_MENU VK_TAB、VK_DELETE 和所有非方向键组合 VK_SHIFT、VK_CONTROL 或 VK_MENU

此表格是对流行 ActiveX 控件 (即 Internet Explorer 和 Microsoft Office 应用程序) 的实验结果,但对于某些控件,可能要求修改。