このページでは

QAxWidget Class

QAxWidget クラスは、ActiveX コントロールをラップする「QWidget 」です。詳細...

ヘッダー: #include <qaxwidget.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS AxContainer)
target_link_libraries(mytarget PRIVATE Qt6::AxContainer)
qmake: QT += axcontainer
継承元:QAxBaseWidget およびQAxBase

パブリック関数

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

再実装されたパブリック関数

virtual QSize minimumSizeHint() const override
virtual void resetControl() override
virtual QSize sizeHint() const override

プロテクトされた関数

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

詳細な説明

QAxWidget は、空のオブジェクトとして、ラップすべき ActiveX コントロールの名前を指定して、あるいは ActiveX コントロールへの既存のインターフェースポインタを指定して、インスタンス化することができます。QAxBase がサポートするデータ型のみを使用するActiveXコントロールのプロパティ、メソッド、およびイベントは、Qtのプロパティ、スロット、およびシグナルとして利用可能になります。基底クラスQAxBase は、IUnknown ポインタを介してActiveXに直接アクセスするためのAPIを提供します。

QAxWidgetはQWidget であり、そのほとんどの場合、そのように使用できます。例えば、ウィジェット階層やレイアウトに組み込んだり、イベントフィルタとして機能させたりすることができます。enabled などの標準的なウィジェットプロパティはサポートされていますが、パレットやフォントなどの環境プロパティのサポート実装は ActiveX コントロールに依存します。QAxWidget は必要なヒントを提供しようとします。

ただし、mousePressEvent や keyPressEvent といった Qt 固有のイベントハンドラを再実装しても、それらが確実に呼び出されるとは限りません。組み込みコントロールは QAxWidget を完全に覆い隠しており、通常はユーザーインターフェース自体を処理します。 コントロール固有の API を使用するか(つまり、コントロールのシグナルをリッスンする)、あるいはウィンドウプロシージャのサブクラス化といった標準的な COM 技術を使用してください。

また、QAxWidget は ActiveX 関連の機能の大部分をQAxBase から継承しており、特にdynamicCall() およびquerySubObject() が挙げられます。

警告: QAxWidgetを サブクラス化することは可能ですが 、サブクラス内でQ_OBJECT マクロを使用することはできません(生成された moc ファイルはコンパイルされません)。そのため、シグナル、スロット、プロパティを追加することはできません。この制限は、実行時に生成されるメタオブジェクト情報に起因しています。 この問題を回避するには、QAxWidgetをQObject サブクラスのメンバとして集約してください。

QAxBase 、QAxObject 、QAxScript 、およびActiveQt Frameworkも参照してください 。

メンバ関数のドキュメント

[explicit] QAxWidget::QAxWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

空のQAxWidgetウィジェットを作成し、parent およびf をQWidget のコンストラクタに渡します。コントロールを初期化するには、setControl()を呼び出してください。

[explicit] QAxWidget::QAxWidget(IUnknown *iface, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

iface で参照される COM オブジェクトをラップする QAxWidget を作成します。parent およびf は、QWidget のコンストラクタに渡されます。

[explicit] QAxWidget::QAxWidget(const QString &c, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

QAxWidget ウィジェットを作成し、ActiveX コントロールc を初期化します。parent およびf は、QWidget のコンストラクタに渡されます。

setControl()も参照してください 。

[override virtual noexcept] QAxWidget::~QAxWidget()

ActiveX コントロールを終了し、QAxWidget ウィジェットを破棄して、割り当てられたすべてのリソースを解放します。

clear()も参照してください 。

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

QWidget::changeEvent(QEvent *event) を再実装します。

void QAxWidget::clear()

ActiveX コントロールを終了します。

resetControl()も参照してください 。

[override virtual protected] void QAxWidget::connectNotify(const QMetaMethod &signal)

QObject::connectNotify(const QMetaMethod &signal) を再実装します。

[virtual] QAxAggregated *QAxWidget::createAggregate()

ActiveX コントロールのクライアント側に対して追加の COM インターフェースを実装する場合、または COM インターフェースの代替実装を提供したい場合は、この関数を再実装してください。QAxAggregated のサブクラスである新しいオブジェクトを返してください。

デフォルトの実装では、nullポインタを返します。

[virtual protected] bool QAxWidget::createHostWindow(bool initialized)

ActiveX コントロールのクライアントサイトを作成し、コントロールの埋め込みに成功した場合は true を返し、失敗した場合は false を返します。initialized が true の場合、コントロールはすでに初期化されています。

この関数は、initialize() によって呼び出されます。control.Initialize() を再実装してコントロールのインスタンス化をカスタマイズする場合、再実装内でこの関数を呼び出すことで、コントロールをデフォルトのクライアント側で埋め込むようにします。ActiveX コントロールのクライアント側を作成し、コントロールの埋め込みに成功した場合は true を、失敗した場合は false を返します。

[protected] bool QAxWidget::createHostWindow(bool initialized, const QByteArray &data)

ActiveX コントロールのクライアントサイトを作成し、コントロールの埋め込みに成功した場合は true を返し、失敗した場合は false を返します。initialized が false の場合、コントロールはdata を使用して初期化されます。コントロールは、IPersistStreamInit または IPersistStorage インターフェースのいずれかを介して初期化されます。

カスタムデータを使用してコントロールを初期化する必要がある場合は、initialize() の再実装内でこの関数を呼び出してください。この関数は、initialize() のデフォルトの実装では呼び出されません。

bool QAxWidget::doVerb(const QString &verb)

ActiveX コントロールに対し、アクション `verb` を実行するよう要求します。使用可能な動詞は、verbs() によって返されます。

オブジェクトがアクションを実行できた場合は true を返し、そうでない場合は false を返します。

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

QAxBase::initialize(IUnknown **ptr) を再実装します。

QAxBase::initialize(ptr) を呼び出し、成功した場合はcreateHostWindow(false) を呼び出して、このウィジェットにコントロールを埋め込みます。

コントロールがアクティブになる前に初期化を行うには、この関数を再実装し、createHostWindow(true) を呼び出す前に初期化コードを追加してください。

成功した場合はtrue を返し、それ以外の場合はfalse を返します。

[override virtual] QSize QAxWidget::minimumSizeHint() const

プロパティ「QWidget::minimumSizeHint 」のアクセス関数を再実装します。

[override virtual] void QAxWidget::resetControl()

QAxObjectInterface::resetControl() を再実装します。

ActiveX コントロールをシャットダウンします。

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

QWidget::resizeEvent(QResizeEvent *event) を再実装します。

[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 コントロールに渡され、ActiveX コントロールはそのイベントを処理するか、Qt にイベントを渡します。

関数が false を返した場合、ActiveQt によってキーイベントの処理は無視されます。つまり、ActiveX コントロールがイベントを処理する場合もあれば、処理しない場合もあります。

デフォルトの実装では、以下の場合に true を返します。

WM_SYSKEYDOWNWM_SYSKEYUPWM_KEYDOWN
すべてのキーコードVK_MENUVK_TAB、VK_DELETE、および VK_SHIFT、VK_CONTROL、VK_MENU と組み合わされたすべての非矢印キー

この表は、Internet Explorer や Microsoft Office アプリケーションなど、一般的な ActiveX コントロールでの実験結果に基づいていますが、一部のコントロールでは修正が必要になる場合があります。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.