Auf dieser Seite

QWebChannel Class

Stellt QObjects für entfernte HTML-Clients bereit. 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)

Ausführliche Beschreibung

Der QWebChannel schließt die Lücke zwischen C++-Anwendungen und HTML/JavaScript-Anwendungen. Durch die Veröffentlichung eines von „ QObject “ abgeleiteten Objekts an einen QWebChannel und die Verwendung der Datei „qwebchannel.js“ auf der HTML-Seite kann transparent auf Eigenschaften sowie öffentliche Slots und Methoden des „ QObject “ zugegriffen werden. Es ist keine manuelle Nachrichtenübermittlung und Datenserialisierung erforderlich; Eigenschaftsaktualisierungen und Signalauslösungen auf der C++-Seite werden automatisch an die möglicherweise remote laufenden HTML-Clients übertragen. Auf der Client-Seite wird für jedes veröffentlichte C++- QObject ein JavaScript-Objekt erstellt. Es spiegelt die API des C++-Objekts wider und ist somit intuitiv nutzbar.

QWebChannel unterstützt transparent „ 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 ` abgeschlossen ist.

Eine 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 der ` QJsonValue ` nicht dem erwarteten Format entspricht. Andernfalls kann QWebChannel nicht auf seine Standardkonvertierungsmechanismen zurückgreifen. Benutzerdefinierte Konverter sind auch auf der JavaScript-Seite verfügbar.

Die C++-QWebChannel-API ermöglicht die Kommunikation mit jedem HTML-Client, der auf einem lokalen oder sogar einem Remote-Rechner ausgeführt werden kann. Die einzige Einschränkung besteht darin, dass der HTML-Client die von qwebchannel.js verwendeten JavaScript-Funktionen unterstützt. Somit kann man im Grunde mit jedem modernen HTML-Browser oder jeder eigenständigen JavaScript-Laufzeitumgebung, wie beispielsweise node.js, interagieren.

Es gibt außerdem ein deklaratives „ WebChannel API “.

Siehe auch „Qt WebChannel –Standalone-Beispiel“, „JavaScript-API“ und „ QMetaType::registerConverter()“.

Dokumentation zu den Eigenschaften

[bindable] blockUpdates : bool

Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.

Bei der Einstellung „ true “ werden Aktualisierungen blockiert, und Remote-Clients werden nicht über Änderungen an der Eigenschaft benachrichtigt.

Die Änderungen werden protokolliert und an die Clients gesendet, sobald Aktualisierungen durch das Setzen dieser Eigenschaft auf „ false “ wieder freigegeben werden. Standardmäßig werden Aktualisierungen nicht blockiert.

Zugriffsfunktionen:

bool blockUpdates() const
void setBlockUpdates(bool block)

Notifier-Signal:

void blockUpdatesChanged(bool block)

[bindable] propertyUpdateInterval : int

Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.

Diese Eigenschaft enthält das Intervall für die Aktualisierung der Eigenschaft.

Dieses Intervall kann auf einen anderen Wert in Millisekunden geändert werden, indem ein positiver Wert festgelegt wird. Eigenschaftsaktualisierungen werden gebündelt und nach Ablauf des Intervalls gesendet. Bei einem Wert von Null werden die Aktualisierungen, die innerhalb eines einzelnen Durchlaufs der Ereignisschleife stattfinden, gebündelt und beim nächsten Durchlauf gesendet. Bei einem negativen Wert werden die Aktualisierungen sofort gesendet. Der Standardwert beträgt 50 Millisekunden.

Zugriffsfunktionen:

int propertyUpdateInterval() const
void setPropertyUpdateInterval(int ms)

Dokumentation zu den Member-Funktionen

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

Erstellt 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 mit qwebchannel.js.

[virtual noexcept] QWebChannel::~QWebChannel()

Zerstört die „ QWebChannel “.

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

Verbindet das „ QWebChannel “ mit dem angegebenen „ transport “-Objekt.

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)

Entfernt das angegebene „ object “ aus dem „ QWebChannel “.

Remote-Clients erhalten ein „ destroyed “-Signal für das angegebene Objekt.

Hinweis: Diese Funktion kann über das Metaobjektsystem und aus QML aufgerufen werden. Siehe „ Q_INVOKABLE “.

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

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

Trennt die Verbindung zwischen dem Objekt „ QWebChannel “ und dem Objekt „ transport “.

Siehe auch QWebChannel::connectTo().

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

Registriert ein einzelnes Objekt bei der „ QWebChannel “.

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

Bei einer Eigenschaft, die zwar zu „ BINDABLE “ gehört, aber kein „ NOTIFY “-Signal besitzt, funktionieren Eigenschaftsaktualisierungen auf der Client-Seite zwar, es gibt jedoch keinen Mechanismus, um einen Callback für die Änderungsbenachrichtigungen zu registrieren.

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

Hinweis: Diese Funktion kann über das Metaobjektsystem und aus QML 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 bei „ QWebChannel “.

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

Hinweis: Eine derzeitige Einschränkung besteht darin, 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 Map der registrierten Objekte zurück, die an Remote-Clients veröffentlicht werden.

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

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