QWebChannel Class
QObjectをリモートのHTMLクライアントから利用可能にします。詳細...
| Header: | #include <QWebChannel> |
| qmake: | QT += webchannel |
| Inherits: | QObject |
プロパティ
- blockUpdates : bool
- propertyUpdateInterval : int
パブリック関数
| 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) |
パブリックスロット
| void | connectTo(QWebChannelAbstractTransport *transport) |
| void | disconnectFrom(QWebChannelAbstractTransport *transport) |
シグナル
| void | blockUpdatesChanged(bool block) |
詳細な説明
QWebChannelは、C++アプリケーションとHTML/JavaScriptアプリケーションの間のギャップを埋めます。QObject を継承したオブジェクトをQWebChannelに公開し、HTML側でqwebchannel.jsを使用することで、QObject のプロパティやパブリックスロット、メソッドに透過的にアクセスできます。 手動によるメッセージの受け渡しやデータのシリアライズは不要であり、C++側でのプロパティの更新やシグナルの発火は、リモートで実行されている可能性のあるHTMLクライアントに自動的に伝達されます。クライアント側では、公開されたC++のQObject に対してJavaScriptオブジェクトが作成されます。これはC++オブジェクトのAPIを反映しているため、直感的に使用できます。
QWebChannelはQFuture を透過的にサポートしています。クライアントがQFuture を返すメソッドを呼び出した場合、QWebChannelはQFuture が終了した後にのみ、QFuture の結果を含むレスポンスを送信します。
JSONとの間のカスタム型変換は、QMetaType::registerConverter() を使用してQJsonValue へのコンバータを定義することでサポートされます。なお、QJsonValue から具体的な型へのカスタムコンバータは、QJsonValue が期待される形式と一致しない場合、失敗する必要があります。そうしないと、QWebChannelはデフォルトの変換メカニズムにフォールバックできなくなります。カスタムコンバータはJavaScript側でも利用可能です。
C++ の QWebChannel API を使用すると、ローカルマシン上、あるいはリモートマシン上で動作するあらゆる HTML クライアントと通信することが可能です。唯一の制限は、HTML クライアントがqwebchannel.js で使用される JavaScript 機能をサポートしていることです。したがって、基本的にあらゆる最新の HTML ブラウザや、node.js などのスタンドアロンの JavaScript ランタイムとやり取りすることができます。
また、宣言型のWebChannel API も存在します。
「Qt WebChannel スタンドアロン例」、「JavaScript API」、および「QMetaType::registerConverter()」も参照してください 。
プロパティのドキュメント
[bindable] blockUpdates : bool
注:この プロパティは、QProperty バインディングに対応しています。
true に設定すると、更新がブロックされ、リモートクライアントにはプロパティの変更が通知されなくなります。
変更は記録され、このプロパティを `false` に設定して更新のブロックが解除されると、クライアントに送信されます。デフォルトでは、更新はブロックされません。
アクセス関数:
| bool | blockUpdates() const |
| void | setBlockUpdates(bool block) |
Notifierシグナル:
| void | blockUpdatesChanged(bool block) |
[bindable] propertyUpdateInterval : int
注:この プロパティは、QProperty バインディングをサポートしています。
このプロパティには、プロパティの更新間隔が格納されます。
この間隔は、正の値を設定することで、ミリ秒単位で別の間隔に変更できます。 プロパティの更新はバッチ処理され、この間隔が経過した後に送信されます。0 に設定された場合、1 回のイベントループの実行中に発生した更新はバッチ処理され、次回の実行時に送信されます。負の値に設定された場合、更新は即座に送信されます。デフォルト値は 50 ミリ秒です。
アクセス関数:
| int | propertyUpdateInterval() const |
| void | setPropertyUpdateInterval(int ms) |
メンバ関数のドキュメント
[explicit] QWebChannel::QWebChannel(QObject *parent = nullptr)
指定されたparent を使用して、QWebChannelオブジェクトを構築します。
QWebChannelは、QWebChannelAbstractTransport に接続して初めて完全に動作するようになる点に注意してください。また、HTMLクライアントについても、 qwebchannel.jsを使用して適切に設定する必要があります。
[virtual noexcept] QWebChannel::~QWebChannel()
QWebChannel を削除します。
[slot] void QWebChannel::connectTo(QWebChannelAbstractTransport *transport)
QWebChannel を、指定されたtransport オブジェクトに接続します。
これにより、トランスポートオブジェクトが C++ アプリケーションとリモートの HTML クライアント間の通信を処理します。
「 QWebChannelAbstractTransport 」および「QWebChannel::disconnectFrom()」も参照してください 。
[invokable] void QWebChannel::deregisterObject(QObject *object)
指定されたobject をQWebChannel から登録解除します。
リモートクライアントは、指定されたオブジェクトに関するdestroyed シグナルを受信します。
注:この関数は 、メタオブジェクトシステム経由および QML から呼び出すことができます。Q_INVOKABLE を参照してください。
関連項目: ` QWebChannel::registerObjects()`、`QWebChannel::registerObject()`、および `QWebChannel::registeredObjects()`。
[slot] void QWebChannel::disconnectFrom(QWebChannelAbstractTransport *transport)
QWebChannel をtransport オブジェクトから切り離します。
「QWebChannel::connectTo()」も参照してください 。
[invokable] void QWebChannel::registerObject(const QString &id, QObject *object)
QWebChannel に単一のオブジェクトを登録します。
object のプロパティ、シグナル、およびパブリックメソッドは、リモートクライアントに公開されます。そこで、識別子id を持つオブジェクトが生成されます。
BINDABLE であるものの、NOTIFY シグナルを持たないプロパティは、クライアント側でプロパティの更新は正常に行われますが、変更通知に対するコールバックを登録する仕組みはありません。
注: 現在の制限 として、オブジェクトはクライアントが初期化される前に登録されている必要があります。
注:この関数は 、メタオブジェクトシステムおよび QML から呼び出すことができます。Q_INVOKABLE を参照してください。
関連項目 :QWebChannel::registerObjects()、QWebChannel::deregisterObject()、およびQWebChannel::registeredObjects()も参照してください 。
void QWebChannel::registerObjects(const QHash<QString, QObject *> &objects)
オブジェクトのグループを「QWebChannel 」に登録します。
オブジェクトのプロパティ、シグナル、およびパブリックな呼び出し可能メソッドは、リモートクライアントに公開されます。そこで、objects マップのキーとして使用された識別子を持つオブジェクトが構築されます。
注: 現在の制限として、クライアントが初期化される前にオブジェクトを登録しておく必要があります。
関連項目: QWebChannel::registerObject()、QWebChannel::deregisterObject()、QWebChannel::registeredObjects()も参照してください 。
QHash<QString, QObject *> QWebChannel::registeredObjects() const
リモートクライアントに公開されている登録済みオブジェクトのマップを返します。
QWebChannel::registerObjects()、QWebChannel::registerObject()、および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.