Sur cette page

QAxWidget Class

La classe QAxWidget est une interface de type « QWidget » qui encapsule un contrôle ActiveX. En savoir plus...

En-tête : #include <qaxwidget.h>
CMake : find_package(Qt6 REQUIRED COMPONENTS AxContainer)
target_link_libraries(mytarget PRIVATE Qt6::AxContainer)
qmake : QT += axcontainer
Hérite de :QAxBaseWidget et QAxBase

Fonctions publiques

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)

Fonctions publiques réimplémentées

virtual QSize minimumSizeHint() const override
virtual void resetControl() override
virtual QSize sizeHint() const override

Fonctions protégées

virtual bool createHostWindow(bool initialized)
bool createHostWindow(bool initialized, const QByteArray &data)
virtual bool translateKeyEvent(int message, int keycode) const

Fonctions protégées réimplémentées

virtual void changeEvent(QEvent *e) override
virtual void connectNotify(const QMetaMethod &signal) override
virtual bool initialize(IUnknown **ptr) override
virtual void resizeEvent(QResizeEvent *) override

Description détaillée

Un QAxWidget peut être instancié en tant qu’objet vide, avec le nom du contrôle ActiveX qu’il doit encapsuler, ou avec un pointeur d’interface existant vers ce contrôle ActiveX. Les propriétés, méthodes et événements du contrôle ActiveX qui utilisent uniquement des types de données pris en charge par l'QAxBase deviennent disponibles sous forme de propriétés, de slots et de signaux Qt. La classe de base QAxBase fournit une API permettant d'accéder directement à l'ActiveX via le pointeur IUnknown.

QAxWidget est un QWidget et peut généralement être utilisé en tant que tel ; il peut par exemple être intégré dans une hiérarchie de widgets et des mises en page, ou servir de filtre d’événements. Les propriétés standard des widgets, telles que enabled, sont prises en charge, mais la prise en charge des propriétés d’environnement, comme la palette ou la police, dépend du contrôle ActiveX. QAxWidget s’efforce de fournir les indications nécessaires.

Cependant, vous ne pouvez pas réimplémenter des gestionnaires d’événements spécifiques à Qt, tels que `mousePressEvent` ou `keyPressEvent`, et vous attendre à ce qu’ils soient appelés de manière fiable. Le contrôle intégré recouvre entièrement QAxWidget et gère généralement lui-même l’interface utilisateur. Utilisez les API spécifiques au contrôle (c’est-à-dire écoutez les signaux du contrôle), ou recourez à des techniques COM standard telles que la sous-classification des procédures de fenêtre.

QAxWidget hérite également de la plupart de ses fonctionnalités liées à ActiveX de ` QAxBase`, notamment ` dynamicCall()` et ` querySubObject()`.

Avertissement : vous pouvez créer une sous-classe de QAxWidget, mais vous ne pouvez pas utiliser la macro Q_OBJECT dans cette sous-classe (le fichier moc généré ne se compilera pas) ; vous ne pouvez donc pas ajouter de signaux, de slots ou de propriétés supplémentaires. Cette limitation est due aux informations de méta-objet générées lors de l'exécution. Pour contourner ce problème, agrégez le QAxWidget en tant que membre de la sous-classe QObject.

Voir également QAxBase, QAxObject, QAxScript et ActiveQt Framework.

Documentation des fonctions membres

[explicit] QAxWidget::QAxWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

Crée un widget QAxWidget vide et transmet les paramètres ` parent ` et ` f ` au constructeur ` QWidget `. Pour initialiser un contrôle, appelez la méthode ` setControl()`.

[explicit] QAxWidget::QAxWidget(IUnknown *iface, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

Crée un QAxWidget qui encapsule l'objet COM référencé par iface. Les paramètres parent et f sont transmis au constructeur QWidget.

[explicit] QAxWidget::QAxWidget(const QString &c, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

Crée un widget QAxWidget et initialise le contrôle ActiveX c. Les paramètres parent et f sont transmis au constructeur QWidget.

Voir également setControl().

[override virtual noexcept] QAxWidget::~QAxWidget()

Ferme le contrôle ActiveX et détruit le widget QAxWidget, en libérant toutes les ressources allouées.

Voir aussi clear().

[override virtual protected] void QAxWidget::changeEvent(QEvent *e)

Réimplémente : QWidget::changeEvent(QEvent *event).

void QAxWidget::clear()

Ferme le contrôle ActiveX.

Voir aussi resetControl().

[override virtual protected] void QAxWidget::connectNotify(const QMetaMethod &signal)

Réimplémente : QObject::connectNotify(const QMetaMethod &signal).

[virtual] QAxAggregated *QAxWidget::createAggregate()

Réimplémentez cette fonction lorsque vous souhaitez implémenter des interfaces COM supplémentaires pour le côté client du contrôle ActiveX, ou lorsque vous souhaitez fournir d'autres implémentations d'interfaces COM. Renvoyez un nouvel objet d'une sous-classe de ` QAxAggregated `.

L'implémentation par défaut renvoie le pointeur null.

[virtual protected] bool QAxWidget::createHostWindow(bool initialized)

Crée le site client pour le contrôle ActiveX et renvoie « true » si le contrôle a pu être intégré avec succès ; dans le cas contraire, renvoie « false ». Si la valeur de ` initialized ` est « true », cela signifie que le contrôle a déjà été initialisé.

Cette fonction est appelée par initialize(). Si vous réimplémentez la méthode initialize pour personnaliser l'instanciation du contrôle, appelez cette fonction dans votre réimplémentation afin que le contrôle soit intégré par le côté client par défaut. Crée le côté client du contrôle ActiveX et renvoie « true » si le contrôle a pu être intégré avec succès, sinon renvoie « false ».

[protected] bool QAxWidget::createHostWindow(bool initialized, const QByteArray &data)

Crée le site client pour le contrôle ActiveX et renvoie « true » si le contrôle a pu être intégré avec succès ; dans le cas contraire, renvoie « false ». Si la valeur de ` initialized ` est « false », le contrôle sera initialisé à l’aide de ` data`. Le contrôle sera initialisé via l’interface `IPersistStreamInit` ou `IPersistStorage`.

Si le contrôle doit être initialisé à l’aide de données personnalisées, appelez cette fonction dans votre réimplémentation de initialize(). Cette fonction n’est pas appelée par l’implémentation par défaut de initialize().

bool QAxWidget::doVerb(const QString &verb)

Demande au contrôle ActiveX d'effectuer l'action verb. Les verbes possibles sont renvoyés par la fonction verbs().

La fonction renvoie « true » si l'objet a pu effectuer l'action, sinon elle renvoie « false ».

[override virtual protected] bool QAxWidget::initialize(IUnknown **ptr)

Réimplémente : QAxBase::initialize(IUnknown **ptr).

Appelle QAxBase::initialize(ptr) et intègre le contrôle dans ce widget en appelant createHostWindow(false) en cas de réussite.

Pour initialiser le contrôle avant son activation, réimplémentez cette fonction et ajoutez votre code d'initialisation avant d'appeler createHostWindow(true).

Renvoie true en cas de réussite, false dans le cas contraire.

[override virtual] QSize QAxWidget::minimumSizeHint() const

Réimplémente une fonction d'accès pour la propriété : QWidget::minimumSizeHint.

[override virtual] void QAxWidget::resetControl()

Réimplémente : QAxObjectInterface::resetControl().

Arrête le contrôle ActiveX.

[override virtual protected] void QAxWidget::resizeEvent(QResizeEvent *)

Réimplémente : QWidget::resizeEvent(QResizeEvent *event).

[override virtual] QSize QAxWidget::sizeHint() const

Réimplémente une fonction d'accès pour la propriété : QWidget::sizeHint.

[virtual protected] bool QAxWidget::translateKeyEvent(int message, int keycode) const

Réimplémentez cette fonction pour transmettre certains événements de touche au contrôle ActiveX. ` message ` est l'identifiant du message Windows spécifiant le type de message (par exemple, `WM_KEYDOWN`), et ` keycode ` est le code de touche virtuel (par exemple, `VK_TAB`).

Si la fonction renvoie « true », l'événement de touche est transmis au contrôle ActiveX, qui le traite alors ou le transmet à Qt.

Si la fonction renvoie « false », le traitement de l'événement de touche est ignoré par ActiveQt ; en d'autres termes, le contrôle ActiveX peut le gérer ou non.

L’implémentation par défaut renvoie « true » dans les cas suivants :

WM_SYSKEYDOWNWM_SYSKEYUPWM_KEYDOWN
Tous les codes de toucheVK_MENUVK_TAB, VK_DELETE et toutes les touches autres que les touches fléchées en combinaison avec VK_SHIFT, VK_CONTROL ou VK_MENU

Ce tableau est le résultat d'expérimentations menées avec des contrôles ActiveX courants, tels qu'Internet Explorer et les applications Microsoft Office, mais il peut nécessiter des modifications pour certains contrôles.

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