QAxWidget Class

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

ヘッダー #include <QAxWidget>
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コントロールへの既存のインターフェイスポインタとしてインスタンス化することができます。ActiveXコントロールのプロパティ、メソッド、イベントは、QAxBase でサポートされているデータ型のみを使用し、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ファイルはコンパイルされません)ので、シグナル、スロット、プロパティを追加することはできません。この制限は、実行時に生成されるメタオブジェクト情報によるものです。この問題を回避するには、QObject サブクラスのメンバとして QAxWidget を集約します。

QAxBase,QAxObject,QAxScript,ActiveQt Frameworkも参照してください

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

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

空の QAxWidget ウィジェットを作成し、parentfQWidget コンストラクタに伝搬します。コントロールを初期化するには、setControl() を呼び出します。

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

iface によって参照される COM オブジェクトをラップする QAxWidget を作成します。parentfQWidget コンストラクタに伝搬されます。

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

QAxWidgetウィジェットを作成し、ActiveXコントロールc を初期化します。parentf は、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() から呼び出される。実際のコントロールのインスタンス化をカスタマイズするために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() で返される。

この関数は、オブジェクトがアクションを実行できる場合は真を返し、そうでない場合は偽を返します。

[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 はメッセージタイプを指定するWindowメッセージ識別子(例:WM_KEYDOWN)、keycode は仮想キーコード(例:VK_TAB)です。

この関数がtrueを返した場合、キーイベントはActiveXコントロールに渡され、ActiveXコントロールはイベントを処理するか、Qtにイベントを渡します。

関数がfalseを返した場合、キーイベントの処理はActiveQtによって無視されます。

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

WM_SYSKEYDOWNWM_SYSKEYUPWM_KEYDOWN
すべてのキーコードVK_MENUVK_TAB、VK_DELETE、およびVK_SHIFT、VK_CONTROL、またはVK_MENUと組み合わせた矢印キー以外のすべてのキー。

この表は、一般的なActiveXコントロール(Internet ExplorerやMicrosoft Officeアプリケーションなど)で実験した結果です。

© 2025 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.