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 ウィジェットを作成し、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() から呼び出される。実際のコントロールのインスタンス化をカスタマイズするために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
[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
[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_SYSKEYDOWN | WM_SYSKEYUP | WM_KEYDOWN |
---|---|---|
すべてのキーコード | VK_MENU | VK_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.