En esta página

QAxWidget Class

La clase QAxWidget es un QWidget que envuelve un control ActiveX. Más...

Cabecera: #include <QAxWidget>
CMake: find_package(Qt6 REQUIRED COMPONENTS AxContainer)
target_link_libraries(mytarget PRIVATE Qt6::AxContainer)
qmake: QT += axcontainer
Hereda: QAxBaseWidget y QAxBase

Funciones Públicas

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)

Funciones públicas reimplementadas

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

Funciones protegidas

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

Funciones protegidas reimplementadas

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

Descripción detallada

Un QAxWidget puede ser instanciado como un objeto vacío, con el nombre del control ActiveX que debe envolver, o con un puntero de interfaz existente al control ActiveX. Las propiedades, métodos y eventos del control ActiveX, que sólo utilizan tipos de datos compatibles con QAxBase, pasan a estar disponibles como propiedades, ranuras y señales de Qt. La clase base QAxBase proporciona una API para acceder al ActiveX directamente a través del puntero IUnknown.

QAxWidget es un QWidget y se puede utilizar principalmente como tal, por ejemplo, se puede organizar en una jerarquía de widgets y diseños o actuar como un filtro de eventos. Las propiedades estándar del widget, por ejemplo enabled están soportadas, pero depende del control ActiveX implementar el soporte para propiedades de entorno como por ejemplo la paleta o la fuente. QAxWidget intenta proporcionar las pistas necesarias.

Sin embargo, no puedes reimplementar manejadores de eventos específicos de Qt como mousePressEvent o keyPressEvent y esperar que sean llamados de forma fiable. El control incrustado cubre el QAxWidget por completo, y normalmente maneja la interfaz de usuario por sí mismo. Utiliza APIs específicas del control (es decir, escucha las señales del control), o utiliza técnicas COM estándar como la subclasificación de procedimientos de ventana.

QAxWidget también hereda la mayor parte de su funcionalidad relacionada con ActiveX de QAxBase, especialmente dynamicCall() y querySubObject().

Advertencia: Puedes subclasificar QAxWidget, pero no puedes utilizar la macro Q_OBJECT en la subclase (el archivo moc generado no compilará), por lo que no podrás añadir más señales, ranuras o propiedades. Esta limitación se debe a la información del metaobjeto generada en tiempo de ejecución. Para solucionar este problema, agregue el QAxWidget como miembro de la subclase QObject.

Véase también QAxBase, QAxObject, QAxScript, y ActiveQt Framework.

Documentación de funciones miembro

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

Crea un widget QAxWidget vacío y propaga parent y f al constructor QWidget. Para inicializar un control, llama a setControl().

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

Crea un QAxWidget que envuelve el objeto COM referenciado por iface. parent y f se propagan al constructor QWidget.

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

Crea un widget QAxWidget e inicializa el control ActiveX c. parent y f se propagan al constructor QWidget.

Véase también setControl().

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

Cierra el control ActiveX y destruye el widget QAxWidget, limpiando todos los recursos asignados.

Véase también clear().

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

Reimplementa: QWidget::changeEvent(QEvent *event).

void QAxWidget::clear()

Cierra el control ActiveX.

Véase también resetControl().

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

Reimplementa: QObject::connectNotify(const QMetaMethod &signal).

[virtual] QAxAggregated *QAxWidget::createAggregate()

Reimplemente esta función cuando desee implementar interfaces COM adicionales para el sitio cliente del control ActiveX, o cuando desee proporcionar implementaciones alternativas de interfaces COM. Devuelve un nuevo objeto de una subclase de QAxAggregated.

La implementación por defecto devuelve el puntero nulo.

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

Crea el sitio cliente para el control ActiveX, y devuelve true si el control pudo ser incrustado con éxito, en caso contrario devuelve false. Si initialized es true el control ya ha sido inicializado.

Esta función es llamada por initialize(). Si reimplementa initialize para personalizar la instanciación real del control, llame a esta función en su reimplementación para que el control sea incrustado por el lado del cliente por defecto. Crea el sitio cliente para el control ActiveX, y devuelve true si el control pudo ser incrustado con éxito, en caso contrario devuelve false.

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

Crea el sitio cliente para el control ActiveX, y devuelve true si el control ha podido ser incrustado con éxito, en caso contrario devuelve false. Si initialized es false, el control se inicializará utilizando la interfaz data. El control se inicializará a través de la interfaz IPersistStreamInit o IPersistStorage.

Si el control necesita ser inicializado utilizando datos personalizados, llame a esta función en su reimplementación de initialize(). Esta función no es llamada por la implementación por defecto de initialize().

bool QAxWidget::doVerb(const QString &verb)

Solicita al control ActiveX que realice la acción verb. Los posibles verbos son devueltos por verbs().

La función devuelve true si el objeto puede realizar la acción, en caso contrario devuelve false.

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

Reimplementa: QAxBase::initialize(IUnknown **ptr).

Llama a QAxBase::initialize(ptr), e incrusta el control en este widget llamando a createHostWindow(false) si tiene éxito.

Para inicializar el control antes de activarlo, reimplemente esta función y añada su código de inicialización antes de llamar a createHostWindow(true).

Devuelve true en caso de éxito, false en caso contrario.

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

Reimplementa una función de acceso para la propiedad: QWidget::minimumSizeHint.

[override virtual] void QAxWidget::resetControl()

Reimplementa: QAxObjectInterface::resetControl().

Cierra el control ActiveX.

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

Reimplementa: QWidget::resizeEvent(QResizeEvent *event).

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

Reimplementa una función de acceso para la propiedad: QWidget::sizeHint.

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

Reimplemente esta función para pasar ciertos eventos de tecla al control ActiveX. message es el identificador de mensaje de Window que especifica el tipo de mensaje (por ejemplo, WM_KEYDOWN), y keycode es el código de tecla virtual (por ejemplo, VK_TAB).

Si la función devuelve true, el evento de tecla se pasa al control ActiveX, que procesa el evento o se lo pasa a Qt.

Si la función devuelve false el procesamiento del evento clave es ignorado por ActiveQt, es decir, el control ActiveX puede manejarlo o no.

La implementación por defecto devuelve true para los siguientes casos:

WM_SYSKEYDOWNWM_SYSKEYUPWM_KEYDOWN
Todos los keycodesVK_MENUVK_TAB, VK_DELETE y todas las teclas que no sean de flecha en combinación con VK_SHIFT, VK_CONTROL o VK_MENU

Esta tabla es el resultado de experimentar con controles ActiveX populares, es decir, Internet Explorer y aplicaciones de Microsoft Office, pero para algunos controles puede requerir modificaciones.

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