QAxWidget Class
Die Klasse „QAxWidget“ ist ein „ QWidget “, der ein ActiveX-Steuerelement umschließt. Mehr...
| Header: | #include <qaxwidget.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS AxContainer) target_link_libraries(mytarget PRIVATE Qt6::AxContainer) |
| qmake: | QT += axcontainer |
| Erbt von: | 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) |
Neu implementierte ö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 |
Neu implementierte 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 |
Ausführliche Beschreibung
Ein QAxWidget kann als leeres Objekt, mit dem Namen des ActiveX-Steuerelements, das es umschließen soll, oder mit einem vorhandenen Schnittstellenzeiger auf das ActiveX-Steuerelement instanziiert werden. Die Eigenschaften, Methoden und Ereignisse des ActiveX-Steuerelements, die ausschließlich von „ QAxBase “ unterstützte Datentypen verwenden, stehen als Qt-Eigenschaften, Slots und Signale zur Verfügung. Die Basisklasse „ QAxBase “ bietet eine API für den direkten Zugriff auf das ActiveX-Steuerelement über den „ IUnknown “-Zeiger.
QAxWidget ist ein „ QWidget “ und kann größtenteils als solches verwendet werden, z. B. kann es in einer Widget-Hierarchie und in Layouts organisiert werden oder als Ereignisfilter fungieren. Standard-Widget-Eigenschaften, z. B. ` enabled `, werden unterstützt, doch die Implementierung der Unterstützung für Umgebungs-Eigenschaften wie z. B. „Palette“ oder „Font“ hängt vom jeweiligen ActiveX-Steuerelement ab. QAxWidget versucht, die erforderlichen Hinweise bereitzustellen.
Sie können jedoch keine Qt-spezifischen Ereignisbehandler wie „mousePressEvent“ oder „keyPressEvent“ neu implementieren und davon ausgehen, dass diese zuverlässig aufgerufen werden. Das eingebettete Steuerelement überdeckt das QAxWidget vollständig und übernimmt in der Regel die Verwaltung der Benutzeroberfläche selbst. Verwenden Sie kontrollspezifische APIs (d. h. hören Sie auf die Signale der Kontrolle) oder nutzen Sie Standard-COM-Techniken wie das Subclassing von Fensterprozeduren.
QAxWidget erbt zudem den Großteil seiner ActiveX-bezogenen Funktionalität von „ QAxBase “, insbesondere „ dynamicCall()“ und „ querySubObject()“.
Warnung: Sie können QAxWidget unterklassen, aber Sie können das Makro „ Q_OBJECT “ in der Unterklasse nicht verwenden (die generierte MOC-Datei lässt sich nicht kompilieren), sodass Sie keine weiteren Signale, Slots oder Eigenschaften hinzufügen können. Diese Einschränkung ist auf die zur Laufzeit generierten Metaobjekt-Informationen zurückzuführen. Um dieses Problem zu umgehen, fügen Sie das QAxWidget als Mitglied der Unterklasse „ QObject “ ein.
Siehe auch „ QAxBase“ , „ QAxObject “, „ QAxScript “ und „ActiveQt Framework“.
Dokumentation zu den Mitgliedsfunktionen
[explicit] QAxWidget::QAxWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
Erstellt ein leeres QAxWidget-Widget und übergibt die Parameter „ parent “ und „ f “ an den Konstruktor „ QWidget “. Um ein Steuerelement zu initialisieren, rufen Sie „ setControl()“ auf.
[explicit] QAxWidget::QAxWidget(IUnknown *iface, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
Erstellt ein QAxWidget, das das COM-Objekt umschließt, auf das unter iface verwiesen wird. parent und f werden an den Konstruktor von QWidget weitergegeben.
[explicit] QAxWidget::QAxWidget(const QString &c, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
Erstellt ein QAxWidget-Widget und initialisiert das ActiveX-Steuerelement c. parent und f werden an den Konstruktor von QWidget übergeben.
Siehe auch setControl().
[override virtual noexcept] QAxWidget::~QAxWidget()
Beendet das ActiveX-Steuerelement und löscht das Widget „ QAxWidget “, wobei alle zugewiesenen Ressourcen freigegeben werden.
Siehe auch clear().
[override virtual protected] void QAxWidget::changeEvent(QEvent *e)
Umsetzt: ` QWidget::changeEvent(QEvent *event)`.
void QAxWidget::clear()
Beendet das ActiveX-Steuerelement.
Siehe auch „ resetControl()“.
[override virtual protected] void QAxWidget::connectNotify(const QMetaMethod &signal)
Implementiert neu: QObject::connectNotify(const QMetaMethod &signal).
[virtual] QAxAggregated *QAxWidget::createAggregate()
Implementieren Sie diese Funktion neu, wenn Sie zusätzliche COM-Schnittstellen für die Client-Seite des ActiveX-Steuerelements implementieren möchten oder wenn Sie alternative Implementierungen von COM-Schnittstellen bereitstellen möchten. Geben Sie ein neues Objekt einer Unterklasse von ` QAxAggregated ` zurück.
Die Standardimplementierung gibt den Nullzeiger zurück.
[virtual protected] bool QAxWidget::createHostWindow(bool initialized)
Erstellt die Client-Seite für das ActiveX-Steuerelement und gibt „true“ zurück, wenn das Steuerelement erfolgreich eingebettet werden konnte; andernfalls wird „false“ zurückgegeben. Ist „ initialized “ auf „true“ gesetzt, wurde das Steuerelement bereits initialisiert.
Diese Funktion wird von ` initialize()` aufgerufen. Wenn Sie `initialize` neu implementieren, um die eigentliche Instanziierung des Steuerelements anzupassen, rufen Sie diese Funktion in Ihrer Neuimplementierung auf, damit das Steuerelement auf der Standard-Clientseite eingebettet wird. Erstellt die Client-Seite 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)
Erstellt die Client-Seite für das ActiveX-Steuerelement und gibt „true“ zurück, wenn das Steuerelement erfolgreich eingebettet werden konnte; andernfalls wird „false“ zurückgegeben. Ist „ initialized “ auf „false“ gesetzt, wird das Steuerelement mithilfe von „ data “ initialisiert. Die Initialisierung des Steuerelements erfolgt entweder über die Schnittstelle „IPersistStreamInit“ oder „IPersistStorage“.
Wenn das Steuerelement mit benutzerdefinierten Daten initialisiert werden muss, rufen Sie diese Funktion in Ihrer Neuimplementierung von ` initialize()` auf. Diese Funktion wird von der Standardimplementierung von ` initialize()` nicht 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 „false“.
[override virtual protected] bool QAxWidget::initialize(IUnknown **ptr)
Implementiert erneut: ` QAxBase::initialize` (`IUnknown **ptr`).
Ruft „ QAxBase::initialize “ (ptr) auf und bettet das Steuerelement in dieses Widget ein, indem bei Erfolg „ createHostWindow “ (false) aufgerufen wird.
Um das Steuerelement vor seiner Aktivierung zu initialisieren, implementieren Sie diese Funktion neu und fügen Sie Ihren Initialisierungscode ein, bevor Sie ` createHostWindow(true)` aufrufen.
Gibt bei Erfolg „ true “ zurück, andernfalls „ false “.
[override virtual] QSize QAxWidget::minimumSizeHint() const
Implementiert eine Zugriffsfunktion für die Eigenschaft „ QWidget::minimumSizeHint “ neu.
[override virtual] void QAxWidget::resetControl()
Implementiert: ` QAxObjectInterface::resetControl()`.
Beendet das ActiveX-Steuerelement.
[override virtual protected] void QAxWidget::resizeEvent(QResizeEvent *)
Implementiert: ` QWidget::resizeEvent(QResizeEvent *event)`.
[override virtual] QSize QAxWidget::sizeHint() const
Implementiert eine Zugriffsfunktion für die Eigenschaft „ QWidget::sizeHint “ neu.
[virtual protected] bool QAxWidget::translateKeyEvent(int message, int keycode) const
Implementieren Sie diese Funktion neu, um bestimmte Tastenereignisse an das ActiveX-Steuerelement weiterzuleiten. „ message “ ist die Window-Message-ID, die 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 das Ereignis dann entweder verarbeitet oder an Qt weiterleitet.
Gibt die Funktion „false“ zurück, wird die Verarbeitung des Tastenereignisses von ActiveQt ignoriert, d. h., das ActiveX-Steuerelement kann es bearbeiten oder auch nicht.
Die Standardimplementierung gibt in den folgenden Fällen „true“ zurück:
| WM_SYSKEYDOWN | WM_SYSKEYUP | WM_KEYDOWN |
|---|---|---|
| Alle Tastencodes | VK_MENU | VK_TAB, VK_DELETE und alle Nicht-Pfeiltasten in Kombination mit VK_SHIFT, VK_CONTROL oder VK_MENU |
Diese Tabelle ist das Ergebnis von Tests mit gängigen ActiveX-Steuerelementen, z. B. Internet Explorer und Microsoft Office-Anwendungen; bei einigen Steuerelementen sind jedoch möglicherweise Anpassungen erforderlich.
© 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.