QAxWidget 類

The QAxWidget 類是 QWidget 用於包裹 ActiveX 控件。 更多...

頭: #include <QAxWidget>
qmake: QT += axcontainer
繼承: QWidget and QAxBase

公共函數

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

重實現公共函數

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

保護函數

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 )
virtual void connectNotify (const QMetaMethod & signal )
virtual bool initialize (IUnknown ** ptr )
virtual void resizeEvent ( QResizeEvent * )

額外繼承成員

詳細描述

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 = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())

創建空 QAxWidget 小部件並傳播 parent and f 到 QWidget 構造函數。要初始化控件,調用 setControl ().

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

創建 QAxWidget 小部件並初始化 ActiveX 控件 c . parent and f 被傳播給 QWidget 構造函數。

另請參閱 setControl ().

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

創建 QAxWidget 包裹引用 COM 對象通過 iface . parent and f 被傳播給 QWidget 構造函數。

QAxWidget:: ~QAxWidget ()

關閉 ActiveX 控件並銷毀 QAxWidget 小部件,清理所有分配資源。

另請參閱 clear ().

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

重實現自 QWidget::changeEvent ().

[虛擬] void QAxWidget:: clear ()

重實現自 QAxBase::clear ().

關閉 ActiveX 控件。

[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 引入。

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

重實現自 QAxBase::initialize ().

調用 QAxBase::initialize ( ptr ),並嵌入控件在此 Widget 中通過調用 createHostWindow (false) 若成功。

為在激活前初始化控件,重實現此函數並添加初始化代碼先於調用 createHostWindow (true)。

該函數在 Qt 4.2 引入。

[虛擬] QSize QAxWidget:: minimumSizeHint () const

重實現自 QWidget::minimumSizeHint ().

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

重實現自 QWidget::resizeEvent ().

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