QAxWidget Class
QAxWidgetクラスは、ActiveXコントロールをラップするQWidget 。詳細...
Header: | #include <QAxWidget> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS AxContainer) target_link_libraries(mytarget PRIVATE Qt6::AxContainer) |
qmake: | QT += axcontainer |
Inherits: | QAxBaseWidget and QAxBase |
パブリック関数
QAxWidget(QWidget *parent = nullptr, int f) | |
QAxWidget(IUnknown *iface, QWidget *parent = nullptr, int f) | |
QAxWidget(const int &c, QWidget *parent = nullptr, int f) | |
virtual | ~QAxWidget() override |
void | clear() |
virtual QAxAggregated * | createAggregate() |
bool | doVerb(const int &verb) |
int | minimumSizeHint() const override |
int | sizeHint() const override |
再実装パブリック関数
virtual void | resetControl() override |
保護された関数
void | changeEvent(int *e) override |
void | connectNotify(const int &signal) override |
virtual bool | createHostWindow(bool initialized) |
bool | createHostWindow(bool initialized, const int &data) |
void | resizeEvent(int *) override |
virtual bool | translateKeyEvent(int message, int keycode) const |
再実装された保護された関数
virtual bool | initialize(IUnknown **ptr) 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-fileはコンパイルされません)ので、シグナル、スロット、プロパティを追加することはできません。この制限は、実行時に生成されるメタオブジェクト情報によるものです。この問題を回避するには、QObject サブクラスのメンバとして QAxWidget を集約します。
QAxBase,QAxObject,QAxScript,ActiveQt Frameworkも参照してください 。
メンバー関数ドキュメント
[explicit]
QAxWidget::QAxWidget(QWidget *parent = nullptr, int f)
空の QAxWidget ウィジェットを作成し、parent とf をQWidget コンストラクタに伝搬します。コントロールを初期化するには、setControl() を呼び出します。
[explicit]
QAxWidget::QAxWidget(IUnknown *iface, QWidget *parent = nullptr, int f)
iface によって参照される COM オブジェクトをラップする QAxWidget を作成します。parent とf はQWidget コンストラクタに伝搬されます。
[explicit]
QAxWidget::QAxWidget(const int &c, QWidget *parent = nullptr, int f)
QAxWidget ウィジェットを作成し、ActiveX コントロールc を初期化します。parent およびf は、QWidget コンストラクタに伝搬されます。
setControl()も参照してください 。
[override virtual noexcept]
QAxWidget::~QAxWidget()
ActiveX コントロールをシャットダウンし、QAxWidget ウィジェットを破棄して、割り当てられたすべてのリソースをクリーンアップします。
clear() も参照 。
[protected]
void QAxWidget::changeEvent(int *e)
void QAxWidget::clear()
ActiveX コントロールをシャットダウンします。
resetControl() も参照 。
[protected]
void QAxWidget::connectNotify(const int &signal)
[virtual]
QAxAggregated *QAxWidget::createAggregate()
ActiveX コントロールのクライアント・サイトに追加の COM インタフェースを実装する場合や、 COM インタフェースの代替実装を提供する場合は、この関数を再実装します。QAxAggregated サブクラスの新しいオブジェクトを返します。
デフォルトの実装では、NULL ポインタを返します。
[virtual protected]
bool QAxWidget::createHostWindow(bool initialized)
ActiveXコントロールのクライアント・サイトを作成し、コントロールが正常に埋め込まれた場合はtrueを返し、そうでない場合はfalseを返します。そうでなければfalseを返す。initialized がtrueの場合、コントロールはすでに初期化されている。
この関数はinitialize() から呼び出される。実際のコントロールのインスタンス化をカスタマイズするためにinitializeを再実装する場合は、再実装の中でこの関数を呼び出し、デフォルトのクライアント側でコントロールを埋め込みます。ActiveXコントロールのクライアント・サイトを作成し、コントロールが正常に埋め込まれた場合はtrueを返し、そうでない場合はfalseを返します。
[protected]
bool QAxWidget::createHostWindow(bool initialized, const int &data)
ActiveXコントロールのクライアント・サイトを作成し、コントロールが正常に埋め込まれた場合はtrueを返し、そうでない場合はfalseを返します。initialized が False の場合、コントロールはdata を使用して初期化される。 コントロールは、IPersistStreamInit または IPersistStorage インターフェースで初期化される。
カスタム・データを使用してコントロールを初期化する必要がある場合は、initialize() の再実装でこの関数を呼び出してください。この関数は、initialize() のデフォルト実装では呼び出されません。
bool QAxWidget::doVerb(const int &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
を返します。
int QAxWidget::minimumSizeHint() const
[override virtual]
void QAxWidget::resetControl()
再実装:QAxObjectInterface::resetControl().
ActiveX コントロールをシャットダウンします。
[protected]
void QAxWidget::resizeEvent(int *)
int QAxWidget::sizeHint() const
[virtual protected]
bool QAxWidget::translateKeyEvent(int message, int keycode) const
この関数を再実装して、特定のキーイベントをActiveXコントロールに渡します。message は、メッセージタイプを指定するウィンドウメッセージ識別子(例: 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アプリケーションで実験した結果です。
©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。