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 小部件并传播 parent and f 到 QWidget 构造函数。要初始化控件,调用 setControl ().
创建 QAxWidget 小部件并初始化 ActiveX 控件 c . parent and f 被传播给 QWidget 构造函数。
另请参阅 setControl ().
创建 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 引入。
请求 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 应用程序) 的实验结果,但对于某些控件,可能要求修改。