QAxAggregated Class
La classe QAxAggregated est une classe de base abstraite pour les implémentations d'interfaces COM supplémentaires. Plus d'informations...
| En-tête : | #include <QAxAggregated> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS AxServer)target_link_libraries(mytarget PRIVATE Qt6::AxServer) |
| qmake : | QT += axserver |
Fonctions publiques
| virtual long | queryInterface(const QUuid &iid, void **iface) = 0 |
Fonctions protégées
| virtual | ~QAxAggregated() |
| IUnknown * | controllingUnknown() const |
| QObject * | object() const |
| QWidget * | widget() const |
Description détaillée
Créer une sous-classe de QAxAggregated et réimplémenter queryInterface() pour prendre en charge des interfaces COM supplémentaires. Utiliser l'héritage multiple de ces interfaces COM. Implémenter l'interface IUnknown de ces interfaces COM en déléguant les appels à QueryInterface(), AddRef() et Release() à l'interface fournie par controllingUnknown().
Utilisez la méthode widget() si vous devez faire des appels à QWidget qui implémente le contrôle ActiveX. Vous ne devez pas stocker ce pointeur dans votre sous-classe (à moins que vous n'utilisiez QPointer), car QWidget peut être détruit par le cadre ActiveQt à tout moment.
Voir également QAxBindable, QAxFactory, et Active Qt.
Documentation sur les fonctions membres
[virtual constexpr noexcept protected] QAxAggregated::~QAxAggregated()
Le destructeur est appelé en interne par Qt.
[protected] IUnknown *QAxAggregated::controllingUnknown() const
Renvoie l'interface IUnknown du contrôle ActiveX. Implémentez l'interface IUnknown dans votre sous-classe QAxAggregated pour déléguer les appels à QueryInterface(), AddRef() et Release() à l'interface fournie par cette fonction.
HRESULT AxImpl::QueryInterface(REFIID iid, void **iface) { return controllingUnknown()->QueryInterface(iid, iface); } ulong AxImpl::AddRef() { return controllingUnknown()->AddRef(); } ulong AxImpl::Release() { return controllingUnknown()->Release(); }
Au lieu de déclarer et d'implémenter ces trois fonctions manuellement, vous pouvez utiliser la macro QAXAGG_IUNKNOWN dans la déclaration de classe de votre sous-classe.
[protected] QObject *QAxAggregated::object() const
Renvoie un pointeur sur la sous-classe QObject qui implémente l'objet COM. Cette fonction peut renvoyer 0.
Attention : Vous ne devez pas stocker le pointeur retourné, à moins que vous n'utilisiez un QPointer, car le QObject peut être détruit par ActiveQt à tout moment.
[pure virtual] long QAxAggregated::queryInterface(const QUuid &iid, void **iface)
Réimplémenter cette fonction virtuelle pure pour prendre en charge d'autres interfaces COM. Définissez la valeur de iface pour qu'elle pointe vers cet objet afin de prendre en charge l'interface iid. Notez que vous devez faire pointer le pointeur this sur la superclasse appropriée.
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; }
Renvoyer les résultats COM standard S_OK (l'interface est prise en charge) ou E_NOINTERFACE (l'interface demandée n'est pas prise en charge).
Attention : Même si vous devez implémenter l'interface IUnknown, si vous implémentez n'importe quelle interface COM, vous ne devez pas prendre en charge l'interface IUnknown dans votre implémentation de queryInterface().
[protected] QWidget *QAxAggregated::widget() const
Renvoie un pointeur sur la sous-classe QWidget qui implémente le contrôle ActiveX. Cette fonction peut renvoyer 0.
© 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.