QAxWidget Class

Die Klasse QAxWidget ist eine QWidget, die ein ActiveX-Steuerelement umhüllt. Mehr...

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

Öffentliche Funktionen

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)

Reimplementierte öffentliche Funktionen

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

Geschützte Funktionen

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

Reimplementierte geschützte Funktionen

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

Detaillierte Beschreibung

Ein QAxWidget kann als leeres Objekt, mit dem Namen des ActiveX-Steuerelements, das es umhüllen soll, oder mit einem vorhandenen Schnittstellenzeiger auf das ActiveX-Steuerelement instanziiert werden. Die Eigenschaften, Methoden und Ereignisse des ActiveX-Controls, die nur von QAxBase unterstützte Datentypen verwenden, werden als Qt-Eigenschaften, Slots und Signale verfügbar. Die Basisklasse QAxBase bietet eine API für den direkten Zugriff auf das ActiveX über den Zeiger IUnknown.

QAxWidget ist ein QWidget und kann größtenteils als solches verwendet werden, z.B. kann es in einer Widget-Hierarchie und Layouts organisiert werden oder als Ereignisfilter fungieren. Standard-Widget-Eigenschaften, wie z.B. enabled, werden unterstützt, aber es hängt vom ActiveX-Control ab, Unterstützung für umgebende Eigenschaften wie z.B. Palette oder Schriftart zu implementieren. QAxWidget versucht, die notwendigen Hinweise zu geben.

Sie können jedoch keine Qt-spezifischen Event-Handler wie mousePressEvent oder keyPressEvent reimplementieren und erwarten, dass diese zuverlässig aufgerufen werden. Das eingebettete Steuerelement deckt das QAxWidget vollständig ab und verwaltet normalerweise die Benutzeroberfläche selbst. Verwenden Sie Control-spezifische APIs (d.h. hören Sie auf die Signale des Controls), oder verwenden Sie Standard-COM-Techniken wie Window-Procedure-Subclassing.

QAxWidget erbt auch die meisten seiner ActiveX-bezogenen Funktionen von QAxBase, insbesondere dynamicCall() und querySubObject().

Warnung: Sie können QAxWidget subclassen, aber Sie können das Q_OBJECT Makro in der Subklasse nicht verwenden (die generierte moc-Datei wird nicht kompiliert), so dass Sie keine weiteren Signale, Slots oder Eigenschaften hinzufügen können. Diese Einschränkung ist auf die zur Laufzeit generierten Meta-Objekt-Informationen zurückzuführen. Um dieses Problem zu umgehen, aggregieren Sie das QAxWidget als Mitglied der QObject Subklasse.

Siehe auch QAxBase, QAxObject, QAxScript, und ActiveQt Framework.

Dokumentation der Mitgliedsfunktionen

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

Erzeugt ein leeres QAxWidget-Widget und gibt parent und f an den QWidget Konstruktor weiter. Um ein Steuerelement zu initialisieren, rufen Sie setControl() auf.

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

Erzeugt ein QAxWidget, das das von iface referenzierte COM-Objekt umhüllt. parent und f werden an den QWidget -Konstruktor weitergegeben.

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

Erzeugt ein QAxWidget-Widget und initialisiert das ActiveX-Steuerelement c. parent und f werden an den QWidget -Konstruktor weitergegeben.

Siehe auch setControl().

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

Beendet das ActiveX-Steuerelement und zerstört das Widget QAxWidget, wobei alle zugewiesenen Ressourcen aufgeräumt werden.

Siehe auch clear().

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

Reimplements: QWidget::changeEvent(QEvent *Event).

void QAxWidget::clear()

Schaltet das ActiveX-Steuerelement ab.

Siehe auch resetControl().

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

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

[virtual] QAxAggregated *QAxWidget::createAggregate()

Reimplementieren Sie diese Funktion, wenn Sie zusätzliche COM-Schnittstellen für die Client-Site des ActiveX-Steuerelements implementieren möchten, oder wenn Sie alternative Implementierungen von COM-Schnittstellen bereitstellen möchten. Gibt ein neues Objekt einer QAxAggregated Unterklasse zurück.

Die Standardimplementierung gibt den Null-Zeiger zurück.

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

Erzeugt die Client-Site für das ActiveX-Steuerelement und gibt true zurück, wenn das Steuerelement erfolgreich eingebettet werden konnte, andernfalls false. Wenn initialized true ist, wurde das Steuerelement bereits initialisiert.

Diese Funktion wird von initialize() aufgerufen. Wenn Sie initialize neu implementieren, um die tatsächliche Instanzierung des Steuerelements anzupassen, rufen Sie diese Funktion in Ihrer Neuimplementierung auf, damit das Steuerelement von der Standard-Client-Seite eingebettet wird. Erstellt die Client-Site für das ActiveX-Steuerelement und gibt true zurück, wenn das Steuerelement erfolgreich eingebettet werden konnte; andernfalls wird false zurückgegeben.

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

Erzeugt die Client-Site für das ActiveX-Steuerelement und gibt true zurück, wenn das Steuerelement erfolgreich eingebettet werden konnte, andernfalls false. Wenn initialized false ist, wird das Steuerelement mit der data initialisiert. Das Steuerelement wird entweder über die Schnittstelle IPersistStreamInit oder IPersistStorage initialisiert.

Wenn das Steuerelement mit benutzerdefinierten Daten initialisiert werden muss, rufen Sie diese Funktion in Ihrer Reimplementierung von initialize() auf. Diese Funktion wird nicht von der Standardimplementierung von initialize() aufgerufen.

bool QAxWidget::doVerb(const QString &verb)

Fordert das ActiveX-Steuerelement auf, die Aktion verb auszuführen. Die möglichen Verben werden von verbs() zurückgegeben.

Die Funktion gibt true zurück, wenn das Objekt die Aktion ausführen konnte, andernfalls gibt sie false zurück.

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

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

Ruft QAxBase::initialize(ptr) auf und bettet das Steuerelement in dieses Widget ein, indem es bei Erfolg createHostWindow(false) aufruft.

Um das Steuerelement zu initialisieren, bevor es aktiviert wird, reimplementieren Sie diese Funktion und fügen Sie Ihren Initialisierungscode hinzu, bevor Sie createHostWindow(true) aufrufen.

Gibt bei Erfolg true zurück, andernfalls false.

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

Reimplantiert eine Zugriffsfunktion für die Eigenschaft: QWidget::minimumSizeHint.

[override virtual] void QAxWidget::resetControl()

Reimplements: QAxObjectInterface::resetControl().

Schaltet das ActiveX-Steuerelement ab.

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

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

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

Reimplantiert eine Zugriffsfunktion für die Eigenschaft: QWidget::sizeHint.

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

Reimplementieren Sie diese Funktion, um bestimmte Tastenereignisse an das ActiveX-Steuerelement zu übergeben. message ist der Window Message Identifier, der den Nachrichtentyp angibt (z.B. WM_KEYDOWN), und keycode ist der virtuelle Tastencode (z.B. VK_TAB).

Wenn die Funktion true zurückgibt, wird das Tastenereignis an das ActiveX-Steuerelement weitergeleitet, das dann entweder das Ereignis verarbeitet oder es an Qt weitergibt.

Wenn die Funktion false zurückgibt, wird die Verarbeitung des Tastenereignisses von ActiveQt ignoriert, d.h. das ActiveX-Steuerelement kann es verarbeiten oder nicht.

Die Standardimplementierung gibt in den folgenden Fällen true zurück:

WM_SYSKEYDOWNWM_SYSKEYUPWM_KEYDOWN
Alle TastencodesVK_MENUVK_TAB, VK_DELETE und alle Nicht-Pfeil-Tasten in Kombination mit VK_SHIFT, VK_CONTROL oder VK_MENU

Diese Tabelle ist das Ergebnis von Experimenten mit gängigen ActiveX-Steuerelementen, z. B. Internet Explorer und Microsoft Office-Anwendungen, aber für einige Steuerelemente sind möglicherweise Änderungen erforderlich.

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