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