QWebChannel Class
リモートの HTML クライアントに QObject を公開する。詳細...
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 Standalone Example,JavaScript API,QMetaType::registerConverter()も参照してください 。
プロパティ・ドキュメンテーション
[bindable]
blockUpdates : bool
注 : こ のプ ロ パテ ィ はQProperty バ イ ンデ ィ ン グに対応 し てい ます。
true
に設定すると、更新はブロックされ、リモートクライアントにはプロパティ変更が通知されません。
このプロパティをfalse
に設定することで、更新が再びブロックされなくなると、変更は記録され、クライアントに送信されます。 デフォルトでは、更新はブロックされません。
[bindable]
propertyUpdateInterval : int
注意: このプロパティはQProperty バインディングに対応しています。
このプロパティは、プロパティの更新間隔を保持する。
この間隔を正の値に設定することで、ミリ秒単位で別の間隔に変更することができます。プロパティの更新は、この間隔が経過した後にバッチ処理され、送信されます。ゼロに設定すると、1回のイベントループ実行内で発生した更新は、バッチ処理され、次の実行時に送信されます。負の値の場合、更新は即座に送信される。デフォルト値は50ミリ秒。
メンバー関数ドキュメント
[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()も参照 。
© 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.