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
Note: このプロパティは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() も参照して ください。
©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。