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 應用程序) 的實驗結果,但對於某些控件,可能要求修改。