Sur cette page

QWebChannel Class

Expose les QObjects aux clients HTML distants. Plus d'informations...

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

Propriétés

Fonctions publiques

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)

Emplacements publics

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

Signaux

void blockUpdatesChanged(bool block)

Description détaillée

Le QWebChannel comble le fossé entre les applications C++ et les applications HTML/JavaScript. En publiant un objet dérivé de QObject sur un QWebChannel et en utilisant qwebchannel.js du côté HTML, il est possible d'accéder de manière transparente aux propriétés, aux slots publics et aux méthodes de QObject. Il n'est pas nécessaire de transmettre manuellement des messages ni de sérialiser des données ; les mises à jour de propriétés et l'émission de signaux du côté C++ sont automatiquement transmises aux clients HTML qui peuvent être exécutés à distance. Du côté du client, un objet JavaScript sera créé pour tout objet C++ publié QObject. Il reflète l'API de l'objet C++ et est donc intuitivement utilisable.

QWebChannel prend en charge de manière transparente QFuture. Lorsqu'un client appelle une méthode qui renvoie un QFuture, QWebChannel envoie une réponse avec le résultat QFuture uniquement lorsque le QFuture est terminé.

La conversion personnalisée de types vers et depuis JSON est prise en charge en définissant des convertisseurs avec QMetaType::registerConverter() vers et depuis QJsonValue. Notez que les convertisseurs personnalisés de QJsonValue vers un type concret doivent échouer si le QJsonValue ne correspond pas au format attendu. Sinon, QWebChannel ne peut pas se rabattre sur ses mécanismes de conversion par défaut. Des convertisseurs personnalisés sont également disponibles du côté de JavaScript.

L'API C++ de QWebChannel permet de communiquer avec n'importe quel client HTML, qui peut s'exécuter sur une machine locale ou même distante. La seule limite est que le client HTML prenne en charge les fonctions JavaScript utilisées par qwebchannel.js. Ainsi, il est possible d'interagir avec n'importe quel navigateur HTML moderne ou tout moteur d'exécution JavaScript autonome, tel que node.js.

Il existe également une version déclarative de WebChannel API.

Voir également Qt WebChannel Standalone Example, JavaScript API, et QMetaType::registerConverter().

Documentation sur les propriétés

[bindable] blockUpdates : bool

Remarque : Cette propriété prend en charge les liaisons QProperty.

Lorsque cette propriété a la valeur true, les mises à jour sont bloquées et les clients distants ne sont pas informés des modifications apportées à la propriété.

Les modifications sont enregistrées et envoyées aux clients une fois que les mises à jour sont débloquées en définissant cette propriété sur false. Par défaut, les mises à jour ne sont pas bloquées.

Fonctions d'accès :

bool blockUpdates() const
void setBlockUpdates(bool block)

Signal de notification :

void blockUpdatesChanged(bool block)

[bindable] propertyUpdateInterval : int

Remarque : Cette propriété prend en charge les liaisons QProperty.

Cette propriété contient l'intervalle de mise à jour de la propriété.

Cet intervalle peut être modifié en millisecondes en lui attribuant une valeur positive. Les mises à jour des propriétés sont regroupées et envoyées à l'expiration de l'intervalle. Si la valeur est égale à zéro, les mises à jour effectuées au cours d'une seule exécution de la boucle d'événements sont mises en lots et envoyées lors de l'exécution suivante. Si la valeur est négative, les mises à jour sont envoyées immédiatement. La valeur par défaut est de 50 millisecondes.

Fonctions d'accès :

int propertyUpdateInterval() const
void setPropertyUpdateInterval(int ms)

Documentation des fonctions membres

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

Construit l'objet QWebChannel avec l'adresse parent.

Notez qu'un QWebChannel n'est pleinement opérationnel que lorsque vous le connectez à un site QWebChannelAbstractTransport. Les clients HTML doivent également être configurés de manière appropriée à l'aide de la commande qwebchannel.js.

[virtual noexcept] QWebChannel::~QWebChannel()

Détruit le site QWebChannel.

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

Connecte le site QWebChannel à l'objet transport donné.

L'objet de transport gère ensuite la communication entre l'application C++ et un client HTML distant.

Voir aussi QWebChannelAbstractTransport et QWebChannel::disconnectFrom().

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

Désenregistre l'objet object de la base de données QWebChannel.

Les clients distants recevront un signal destroyed pour l'objet donné.

Note : Cette fonction peut être invoquée via le système de méta-objets et à partir de QML. Voir Q_INVOKABLE.

Voir également QWebChannel::registerObjects(), QWebChannel::registerObject() et QWebChannel::registeredObjects().

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

Déconnecte l'objet QWebChannel de l'objet transport.

Voir aussi QWebChannel::connectTo().

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

Enregistre un objet unique sur le site QWebChannel.

Les propriétés, les signaux et les méthodes publiques de object sont publiés auprès des clients distants. Un objet portant l'identifiant id est alors construit.

Une propriété qui est BINDABLE mais qui n'a pas de signal NOTIFY aura des mises à jour de propriété fonctionnelles du côté client, mais pas de mécanisme pour enregistrer un rappel pour les notifications de changement.

Note : Une limitation actuelle est que les objets doivent être enregistrés avant qu'un client ne soit initialisé.

Note : Cette fonction peut être invoquée via le système de méta-objets et à partir de QML. Voir Q_INVOKABLE.

Voir également QWebChannel::registerObjects(), QWebChannel::deregisterObject() et QWebChannel::registeredObjects().

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

Enregistre un groupe d'objets sur le site QWebChannel.

Les propriétés, les signaux et les méthodes publiques invocables des objets sont publiés pour les clients distants. Un objet portant l'identifiant utilisé comme clé dans la carte objects est alors construit.

Remarque : une limitation actuelle est que les objets doivent être enregistrés avant qu'un client ne soit initialisé.

Voir aussi QWebChannel::registerObject(), QWebChannel::deregisterObject() et QWebChannel::registeredObjects().

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

Renvoie la carte des objets enregistrés qui sont publiés pour les clients distants.

Voir aussi QWebChannel::registerObjects(), QWebChannel::registerObject() et 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.