QAxBindable Class

Die Klasse QAxBindable bietet eine Schnittstelle zwischen einer QWidget und einem ActiveX-Client. Mehr...

Kopfzeile: #include <QAxBindable>
CMake: find_package(Qt6 REQUIRED COMPONENTS AxServer)
target_link_libraries(mytarget PRIVATE Qt6::AxServer)
qmake: QT += axserver

Öffentliche Funktionen

QAxBindable()
virtual ~QAxBindable()
virtual QAxAggregated *createAggregate()
virtual bool readData(QIODevice *source, const QString &format)
void reportError(int code, const QString &src, const QString &desc, const QString &context = QString())
virtual bool writeData(QIODevice *sink)

Geschützte Funktionen

IUnknown *clientSite() const
void propertyChanged(const char *property)
bool requestPropertyChange(const char *property)

Detaillierte Beschreibung

Die von dieser Klasse bereitgestellten Funktionen ermöglichen es einem ActiveX-Steuerelement, Eigenschaftsänderungen an eine Client-Anwendung zu übermitteln. Erben Sie Ihre Steuerklasse sowohl von QWidget (direkt oder indirekt) als auch von dieser Klasse, um Zugriff auf die Funktionen dieser Klasse zu erhalten. Der Meta-Object Compiler erfordert, dass Sie zuerst von QWidget erben.

class MyActiveX : public QWidget, public QAxBindable
{
    Q_OBJECT
    Q_PROPERTY(int value READ value WRITE setValue)

public:
    MyActiveX(QWidget *parent = 0);
    ...

    int value() const;
    void setValue(int);
};

Wenn Sie die Funktion zum Schreiben der Eigenschaft implementieren, verwenden Sie requestPropertyChange(), um von der ActiveX-Client-Anwendung die Erlaubnis zum Ändern dieser Eigenschaft zu erhalten. Wenn sich die Eigenschaft ändert, rufen Sie propertyChanged() auf, um die ActiveX-Client-Anwendung über die Änderung zu informieren. Wenn ein schwerwiegender Fehler im Steuerelement auftritt, verwenden Sie die statische Funktion reportError(), um den Client zu benachrichtigen.

Verwenden Sie die von clientSite() zurückgegebene Schnittstelle, um den ActiveX-Client aufzurufen. Um zusätzliche COM-Schnittstellen in Ihrem ActiveX-Steuerelement zu implementieren, reimplementieren Sie createAggregate(), um ein neues Objekt einer QAxAggregated Unterklasse zurückzugeben.

Siehe auch QAxAggregated, QAxFactory, und ActiveQt Framework.

Dokumentation der Mitgliedsfunktionen

QAxBindable::QAxBindable()

Konstruiert ein leeres QAxBindable-Objekt.

[virtual noexcept] QAxBindable::~QAxBindable()

Zerstört das Objekt QAxBindable.

[protected] IUnknown *QAxBindable::clientSite() const

Gibt einen Zeiger auf die Client-Site-Schnittstelle für dieses ActiveX-Objekt zurück, oder null, wenn keine Client-Site festgelegt wurde.

Rufen Sie QueryInterface() für die zurückgegebene Schnittstelle auf, um die Schnittstelle zu erhalten, die Sie aufrufen möchten.

[virtual] QAxAggregated *QAxBindable::createAggregate()

Reimplementieren Sie diese Funktion, wenn Sie zusätzliche COM-Schnittstellen im ActiveX-Steuerelement 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.

[protected] void QAxBindable::propertyChanged(const char *property)

Rufen Sie diese Funktion auf, um den Client, der dieses ActiveX-Steuerelement hostet, darüber zu informieren, dass die Eigenschaft property geändert wurde.

Diese Funktion wird normalerweise am Ende der Schreibfunktion der Eigenschaft aufgerufen.

Siehe auch requestPropertyChange().

[virtual] bool QAxBindable::readData(QIODevice *source, const QString &format)

Wenn das COM-Objekt einen MIME-Typ unterstützt, wird diese Funktion aufgerufen, um das COM-Objekt aus den Daten source in format zu initialisieren. Sie müssen source zum Lesen öffnen, bevor Sie aus ihm lesen können.

Gibt true zurück, um den Erfolg anzuzeigen. Wenn die Funktion false zurückgibt, verarbeitet ActiveQt die Daten, indem es die Eigenschaften über das Meta-Objektsystem setzt.

Wenn Sie diese Funktion neu implementieren, müssen Sie auch writeData() implementieren. Die Standardimplementierung tut nichts und gibt false zurück.

Warnung: In HTML eingebettete ActiveX-Steuerelemente können entweder das type - und data -Attribut des object -Tags verwenden, um Daten zu lesen, oder eine Liste von param -Tags verwenden, um Eigenschaften zu initialisieren. Wenn param -Tags verwendet werden, ignoriert Internet Explorer das data -Attribut, und readData wird nicht aufgerufen.

Siehe auch writeData().

void QAxBindable::reportError(int code, const QString &src, const QString &desc, const QString &context = QString())

Meldet einen Fehler an die Client-Anwendung. code ist ein vom Steuerelement definierter Fehlercode. desc ist eine vom Menschen lesbare Beschreibung des Fehlers, die für den Benutzer der Anwendung bestimmt ist. src ist der Name der Fehlerquelle, in der Regel der Name des ActiveX-Servers. context kann der Speicherort einer Hilfedatei mit weiteren Informationen über den Fehler sein. Wenn context mit einer Zahl in Klammern endet, z. B. [12], wird diese Zahl als die Kontext-ID in der Hilfedatei interpretiert.

[protected] bool QAxBindable::requestPropertyChange(const char *property)

Rufen Sie diese Funktion auf, um von dem Client, der dieses ActiveX-Steuerelement hostet, die Erlaubnis zum Ändern der Eigenschaft property anzufordern. Gibt true zurück, wenn der Client die Änderung erlaubt; andernfalls wird false zurückgegeben.

Diese Funktion wird normalerweise zuerst in der Schreibfunktion für property aufgerufen, und das Schreiben wird abgebrochen, wenn die Funktion false zurückgibt.

void MyActiveQt::setText(const QString &text)
{
    if (!requestPropertyChange("text"))
        return;

    // update property

    propertyChanged("text");
}

Siehe auch propertyChanged().

[virtual] bool QAxBindable::writeData(QIODevice *sink)

Wenn das COM-Objekt einen MIME-Typ unterstützt, wird diese Funktion aufgerufen, um das COM-Objekt in sink zu speichern. Sie müssen sink zum Schreiben öffnen, bevor Sie in das Objekt schreiben können.

Gibt true zurück, um den Erfolg anzuzeigen. Wenn die Funktion false zurückgibt, wird ActiveQt das Objekt serialisieren, indem es die Eigenschaftswerte speichert.

Wenn Sie diese Funktion neu implementieren, müssen Sie auch readData() implementieren. Die Standardimplementierung tut nichts und gibt false zurück.

Siehe auch readData().

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