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 ().

[virtual] 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 应用程序) 的实验结果,但对于某些控件,可能要求修改。