Auf dieser Seite

QAxAggregated Class

Die Klasse „QAxAggregated“ ist eine abstrakte Basisklasse für Implementierungen weiterer COM-Schnittstellen. Mehr...

Header: #include <qaxaggregated.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS AxServer)
target_link_libraries(mytarget PRIVATE Qt6::AxServer)
qmake: QT += axserver

Öffentliche Funktionen

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

Geschützte Funktionen

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

Ausführliche Beschreibung

Erstellen Sie eine Unterklasse von QAxAggregated und implementieren Sie die Methode „ queryInterface()“ neu, um zusätzliche COM-Schnittstellen zu unterstützen. Nutzen Sie dabei die Mehrfachvererbung von diesen COM-Schnittstellen. Implementieren Sie die Schnittstelle „IUnknown“ dieser COM-Schnittstellen, indem Sie die Aufrufe an „ QueryInterface() “, „ AddRef() “ und „ Release() “ an die von „ controllingUnknown()“ bereitgestellte Schnittstelle delegieren.

Verwenden Sie die Methode „ widget()“, wenn Sie Aufrufe an das „ QWidget “ ausführen müssen, das das ActiveX-Steuerelement implementiert. Sie dürfen diesen Zeiger nicht in Ihrer Unterklasse speichern (es sei denn, Sie verwenden „ QPointer “), da das „ QWidget “ jederzeit vom ActiveQt-Framework zerstört werden kann.

Siehe auch „ QAxBindable “, „ QAxFactory “ und Active Qt.

Dokumentation zu Mitgliedsfunktionen

[constexpr noexcept protected default] QAxAggregated::QAxAggregated()

Erstellt standardmäßig eine Instanz von ` QAxAggregated`.

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

Der Destruktor wird intern von Qt aufgerufen.

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

Gibt die Schnittstelle „ IUnknown “ des ActiveX-Steuerelements zurück. Implementieren Sie die Schnittstelle „ IUnknown “ in Ihrer Unterklasse von „ QAxAggregated “, um Aufrufe an „ QueryInterface() “, „ AddRef() “ und „ Release() “ an die von dieser Funktion bereitgestellte Schnittstelle zu delegieren.

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

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

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

Anstatt diese drei Funktionen manuell zu deklarieren und zu implementieren, können Sie das Makro „ QAXAGG_IUNKNOWN “ in der Klassendeklaration Ihrer Unterklasse verwenden.

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

Gibt einen Zeiger auf die Unterklasse von „ QObject “ zurück, die das COM-Objekt implementiert. Diese Funktion kann den Wert 0 zurückgeben.

Warnung: Sie dürfen den zurückgegebenen Zeiger nicht speichern, es sei denn, Sie verwenden eine „ QPointer “, da die „ QObject “ jederzeit von ActiveQt zerstört werden kann.

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

Implementieren Sie diese rein virtuelle Funktion neu, um zusätzliche COM-Schnittstellen zu unterstützen. Setzen Sie den Wert von ` iface ` so, dass er auf dieses Objekt verweist, um die Schnittstelle ` iid` zu unterstützen. Beachten Sie, dass Sie den Zeiger ` this ` in die entsprechende Oberklasse umwandeln müssen.

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;
}

Geben Sie die Standard-COM-Ergebnisse „ S_OK “ (Schnittstelle wird unterstützt) oder „ E_NOINTERFACE “ (angeforderte Schnittstelle wird nicht unterstützt) zurück.

Warnung: Auch wenn Sie die Schnittstelle „ IUnknown “ implementieren müssen, wenn Sie eine beliebige COM-Schnittstelle implementieren, dürfen Sie die Schnittstelle „ IUnknown “ in Ihrer Implementierung von `queryInterface()` nicht unterstützen.

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

Gibt einen Zeiger auf die Unterklasse von „ QWidget “ zurück, die das ActiveX-Steuerelement implementiert. Diese Funktion kann den Wert 0 zurückgeben.

Warnung: Sie dürfen den zurückgegebenen Zeiger nicht speichern, es sei denn, Sie verwenden eine ` QPointer`, da die ` QWidget ` jederzeit von ActiveQt zerstört werden kann.

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