QAxAggregated Class

QAxAggregated クラスは、追加の COM インターフェースを実装するための抽象基底クラスです。詳細...

ヘッダー #include <QAxAggregated>
CMake: find_package(Qt6 REQUIRED COMPONENTS AxServer)
target_link_libraries(mytarget PRIVATE Qt6::AxServer)
qmake: QT += axserver

パブリック関数

virtual long queryInterface(const QUuid &iid, void **iface) = 0

保護された関数

virtual ~QAxAggregated()
IUnknown *controllingUnknown() const
QObject *object() const
QWidget *widget() const

詳細説明

QAxAggregated のサブクラスを作成し、queryInterface() を再実装して、追加の COM インターフェイスをサポートします。これらの COM インタフェースからの多重継承を使用します。QueryInterface()AddRef()Release() への呼び出しをcontrollingUnknown() によって提供されるインターフェースに委譲することによって、これらの COM インターフェースの IUnknown インターフェースを実装します。

ActiveX コントロールを実装したQWidget への呼び出しが必要な場合は、widget() メソッドを使用してください。QWidget は ActiveQt フレームワークによっていつでも破棄される可能性があるため、(QPointer を使用しない限り)そのポインタをサブクラスに保存してはなりません。

QAxBindableQAxFactory 、および Active Qt.

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

[virtual constexpr noexcept protected] QAxAggregated::~QAxAggregated()

デストラクタはQtによって内部的に呼び出されます。

[protected] IUnknown *QAxAggregated::controllingUnknown() const

ActiveX コントロールのIUnknown インタフェースを返します。QAxAggregated のサブクラスでIUnknown インタフェースを実装して、QueryInterface()AddRef()Release() への呼び出しをこの関数が提供するインタフェースに委譲します。

HRESULT AxImpl::QueryInterface(REFIID iid, void **iface)
{
    return controllingUnknown()->QueryInterface(iid, iface);
}

ulong AxImpl::AddRef()
{
    return controllingUnknown()->AddRef();
}

ulong AxImpl::Release()
{
    return controllingUnknown()->Release();
}

これらの 3 つの関数を手動で宣言および実装する代わりに、サブクラスのクラス宣言でQAXAGG_IUNKNOWN マクロを使用できます。

[protected] QObject *QAxAggregated::object() const

COM オブジェクトを実装しているQObject サブクラスへのポインタを返します。この関数は 0 を返すことがあります。

警告: QObject は ActiveQt によっていつでも破棄される可能性があるため、QPointer を使用しない限り、返されたポインタを保存してはなりません。

[pure virtual] long QAxAggregated::queryInterface(const QUuid &iid, void **iface)

追加のCOMインタフェースをサポートするために、この純粋仮想関数を再実装する。iid インタフェースをサポートするために、このオブジェクトを指すようにiface の値を設定する。this ポインタを適切なスーパークラスにキャストする必要があることに注意。

long AxImpl::queryInterface(const QUuid &iid, void **iface)
{
    *iface = 0;
    if (iid == IID_ISomeCOMInterface)
        *iface = (ISomeCOMInterface*)this;
    else
        return E_NOINTERFACE;

    AddRef();
    return S_OK;
}

標準COM結果S_OK (インタフェースがサポートされている)またはE_NOINTERFACE (要求されたインタフェースがサポートされていない)を返します。

警告: IUnknown どの COM インタフェースを実装する場合でも、IUnknown インタフェースを実装しなければなりません。

[protected] QWidget *QAxAggregated::widget() const

ActiveX コントロールを実装しているQWidget サブクラスへのポインタを返します。この関数は 0 を返すことがあります。

警告: QWidget は ActiveQt によっていつでも破棄される可能性があるため、QPointer を使用しない限り、返されたポインタを保存してはいけません。

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