QWebChannel Class

Stellt QObjects für entfernte HTML-Clients zur Verfügung. Mehr...

Header: #include <QWebChannel>
qmake: QT += webchannel
Inherits: QObject

Eigenschaften

Öffentliche Funktionen

QWebChannel(QObject *parent = nullptr)
virtual ~QWebChannel()
QBindable<bool> bindableBlockUpdates()
QBindable<int> bindablePropertyUpdateInterval()
bool blockUpdates() const
void deregisterObject(QObject *object)
int propertyUpdateInterval() const
void registerObject(const QString &id, QObject *object)
void registerObjects(const QHash<QString, QObject *> &objects)
QHash<QString, QObject *> registeredObjects() const
void setBlockUpdates(bool block)
void setPropertyUpdateInterval(int ms)

Öffentliche Slots

void connectTo(QWebChannelAbstractTransport *transport)
void disconnectFrom(QWebChannelAbstractTransport *transport)

Signale

void blockUpdatesChanged(bool block)

Detaillierte Beschreibung

Der QWebChannel füllt die Lücke zwischen C++-Anwendungen und HTML/JavaScript-Anwendungen. Durch die Veröffentlichung eines von QObject abgeleiteten Objekts in einem QWebChannel und die Verwendung von qwebchannel.js auf der HTML-Seite kann man transparent auf Eigenschaften und öffentliche Slots und Methoden des QObject zugreifen. Es ist keine manuelle Nachrichtenübermittlung und Serialisierung von Daten erforderlich, Eigenschaftsaktualisierungen und Signalemissionen auf der C++-Seite werden automatisch an die potenziell entfernt laufenden HTML-Clients übertragen. Auf der Client-Seite wird für jedes veröffentlichte C++-Objekt ein JavaScript-Objekt erstellt QObject. Es spiegelt die API des C++-Objekts wider und ist daher intuitiv nutzbar.

QWebChannel unterstützt auf transparente Weise QFuture. Wenn ein Client eine Methode aufruft, die ein QFuture zurückgibt, sendet QWebChannel eine Antwort mit dem QFuture Ergebnis erst dann, wenn die QFuture beendet ist.

Die benutzerdefinierte Konvertierung von Typen in und aus JSON wird durch die Definition von Konvertern mit QMetaType::registerConverter() in und aus QJsonValue unterstützt. Beachten Sie, dass benutzerdefinierte Konverter von QJsonValue in einen konkreten Typ fehlschlagen müssen, wenn das QJsonValue nicht dem erwarteten Format entspricht. Andernfalls kann QWebChannel nicht auf seine Standard-Konvertierungsmechanismen zurückgreifen. Benutzerdefinierte Konverter sind auch auf der JavaScript-Seite verfügbar.

Die C++ QWebChannel API ermöglicht es, mit jedem HTML-Client zu kommunizieren, der auf einem lokalen oder sogar entfernten Rechner laufen kann. Die einzige Einschränkung ist, dass der HTML-Client die von qwebchannel.js verwendeten JavaScript-Funktionen unterstützt. So kann man im Grunde mit jedem modernen HTML-Browser oder einer eigenständigen JavaScript-Laufzeitumgebung wie node.js interagieren.

Es gibt auch eine deklarative WebChannel API.

Siehe auch Qt WebChannel Eigenständiges Beispiel, JavaScript API und QMetaType::registerConverter().

Dokumentation der Eigenschaften

[bindable] blockUpdates : bool

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Wenn sie auf true gesetzt ist, werden Aktualisierungen blockiert und entfernte Clients werden nicht über Eigenschaftsänderungen benachrichtigt.

Die Änderungen werden aufgezeichnet und an die Clients gesendet, sobald die Aktualisierungen wieder freigegeben werden, indem diese Eigenschaft auf false gesetzt wird. Standardmäßig werden die Aktualisierungen nicht blockiert.

[bindable] propertyUpdateInterval : int

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält das Aktualisierungsintervall der Eigenschaft.

Dieses Intervall kann auf ein anderes Intervall in Millisekunden geändert werden, indem es auf einen positiven Wert gesetzt wird. Eigenschaftsaktualisierungen werden gebündelt und nach Ablauf des Intervalls versandt. Bei einem Wert von Null werden die Aktualisierungen innerhalb eines einzelnen Ereignisschleifenlaufs zusammengefasst und beim nächsten Lauf gesendet. Ist der Wert negativ, werden die Aktualisierungen sofort gesendet. Der Standardwert ist 50 Millisekunden.

Dokumentation der Mitgliedsfunktionen

[explicit] QWebChannel::QWebChannel(QObject *parent = nullptr)

Konstruiert das QWebChannel-Objekt mit dem angegebenen parent.

Beachten Sie, dass ein QWebChannel erst dann voll funktionsfähig ist, wenn Sie ihn mit einem QWebChannelAbstractTransport verbinden. Die HTML-Clients müssen ebenfalls entsprechend eingerichtet werden, indem Sie qwebchannel.js.

[virtual noexcept] QWebChannel::~QWebChannel()

Zerstört die QWebChannel.

[slot] void QWebChannel::connectTo(QWebChannelAbstractTransport *transport)

Stellt die Verbindung zwischen QWebChannel und dem angegebenen transport Objekt her.

Das Transportobjekt übernimmt dann die Kommunikation zwischen der C++-Anwendung und einem entfernten HTML-Client.

Siehe auch QWebChannelAbstractTransport und QWebChannel::disconnectFrom().

[invokable] void QWebChannel::deregisterObject(QObject *object)

Deregistriert das angegebene object von der QWebChannel.

Entfernte Clients erhalten ein destroyed Signal für das angegebene Objekt.

Hinweis: Diese Funktion kann über das Meta-Objektsystem und von QML aus aufgerufen werden. Siehe Q_INVOKABLE.

Siehe auch QWebChannel::registerObjects(), QWebChannel::registerObject(), und QWebChannel::registeredObjects().

[slot] void QWebChannel::disconnectFrom(QWebChannelAbstractTransport *transport)

Trennt die Verbindung zwischen QWebChannel und dem Objekt transport.

Siehe auch QWebChannel::connectTo().

[invokable] void QWebChannel::registerObject(const QString &id, QObject *object)

Registriert ein einzelnes Objekt auf der QWebChannel.

Die Eigenschaften, Signale und öffentlichen Methoden des object werden an die Remote-Clients veröffentlicht. Dort wird dann ein Objekt mit der Kennung id erstellt.

Eine Eigenschaft, die BINDABLE ist, aber kein NOTIFY Signal hat, hat funktionierende Eigenschaftsaktualisierungen auf der Client-Seite, aber keinen Mechanismus, um einen Callback für die Änderungsbenachrichtigungen zu registrieren.

Hinweis: Eine aktuelle Einschränkung ist, dass Objekte registriert werden müssen, bevor ein Client initialisiert wird.

Hinweis: Diese Funktion kann über das Meta-Objektsystem und von QML aus aufgerufen werden. Siehe Q_INVOKABLE.

Siehe auch QWebChannel::registerObjects(), QWebChannel::deregisterObject(), und QWebChannel::registeredObjects().

void QWebChannel::registerObjects(const QHash<QString, QObject *> &objects)

Registriert eine Gruppe von Objekten auf der Website QWebChannel.

Die Eigenschaften, Signale und öffentlichen aufrufbaren Methoden der Objekte werden an die Remote-Clients veröffentlicht. Dort wird dann ein Objekt mit dem Bezeichner, der als Schlüssel in der objects Map verwendet wird, konstruiert.

Hinweis: Eine derzeitige Einschränkung ist, dass Objekte registriert werden müssen, bevor ein Client initialisiert wird.

Siehe auch QWebChannel::registerObject(), QWebChannel::deregisterObject(), und QWebChannel::registeredObjects().

QHash<QString, QObject *> QWebChannel::registeredObjects() const

Gibt die Karte der registrierten Objekte zurück, die für entfernte Clients veröffentlicht sind.

Siehe auch QWebChannel::registerObjects(), QWebChannel::registerObject(), und QWebChannel::deregisterObject().

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