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_SYSKEYDOWN | WM_SYSKEYUP | WM_KEYDOWN |
---|---|---|
Alle Tastencodes | VK_MENU | VK_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.