QMqttClient Class
QMqttClientクラスは、MQTTブローカーと通信するセントラルアクセスを表します。詳細...
ヘッダー | #include <QMqttClient> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Mqtt) target_link_libraries(mytarget PRIVATE Qt6::Mqtt) |
qmake: | QT += mqtt |
継承: | QObject |
パブリックな型
enum | ClientError { NoError, InvalidProtocolVersion, IdRejected, ServerUnavailable, BadUsernameOrPassword, …, Mqtt5SpecificError } |
enum | ClientState { Disconnected, Connecting, Connected } |
enum | ProtocolVersion { MQTT_3_1, MQTT_3_1_1, MQTT_5_0 } |
enum | TransportType { IODevice, AbstractSocket, SecureSocket } |
プロパティ
|
|
パブリック機能
QMqttClient(QObject *parent = nullptr) | |
virtual | ~QMqttClient() override |
void | authenticate(const QMqttAuthenticationProperties &prop) |
bool | autoKeepAlive() const |
bool | cleanSession() const |
QString | clientId() const |
void | connectToHost() |
void | connectToHostEncrypted(const QSslConfiguration &conf) |
QMqttConnectionProperties | connectionProperties() const |
void | disconnectFromHost() |
QMqttClient::ClientError | error() const |
QString | hostname() const |
quint16 | keepAlive() const |
QMqttLastWillProperties | lastWillProperties() const |
QString | password() const |
quint16 | port() const |
QMqttClient::ProtocolVersion | protocolVersion() const |
qint32 | publish(const QMqttTopicName &topic, const QByteArray &message = QByteArray(), quint8 qos = 0, bool retain = false) |
qint32 | publish(const QMqttTopicName &topic, const QMqttPublishProperties &properties, const QByteArray &message = QByteArray(), quint8 qos = 0, bool retain = false) |
bool | requestPing() |
QMqttServerConnectionProperties | serverConnectionProperties() const |
void | setConnectionProperties(const QMqttConnectionProperties &prop) |
void | setLastWillProperties(const QMqttLastWillProperties &prop) |
void | setTransport(QIODevice *device, QMqttClient::TransportType transport) |
QMqttClient::ClientState | state() const |
QMqttSubscription * | subscribe(const QMqttTopicFilter &topic, quint8 qos = 0) |
QMqttSubscription * | subscribe(const QMqttTopicFilter &topic, const QMqttSubscriptionProperties &properties, quint8 qos = 0) |
QIODevice * | transport() const |
void | unsubscribe(const QMqttTopicFilter &topic) |
void | unsubscribe(const QMqttTopicFilter &topic, const QMqttUnsubscriptionProperties &properties) |
QString | username() const |
QByteArray | willMessage() const |
quint8 | willQoS() const |
bool | willRetain() const |
QString | willTopic() const |
パブリックスロット
void | setAutoKeepAlive(bool autoKeepAlive) |
void | setCleanSession(bool cleanSession) |
void | setClientId(const QString &clientId) |
void | setError(QMqttClient::ClientError error) |
void | setHostname(const QString &hostname) |
void | setKeepAlive(quint16 keepAlive) |
void | setPassword(const QString &password) |
void | setPort(quint16 port) |
void | setProtocolVersion(QMqttClient::ProtocolVersion protocolVersion) |
void | setState(QMqttClient::ClientState state) |
void | setUsername(const QString &username) |
void | setWillMessage(const QByteArray &willMessage) |
void | setWillQoS(quint8 willQoS) |
void | setWillRetain(bool willRetain) |
void | setWillTopic(const QString &willTopic) |
シグナル
void | authenticationFinished(const QMqttAuthenticationProperties &p) |
void | authenticationRequested(const QMqttAuthenticationProperties &p) |
void | autoKeepAliveChanged(bool autoKeepAlive) |
void | brokerSessionRestored() |
void | cleanSessionChanged(bool cleanSession) |
void | clientIdChanged(QString clientId) |
void | connected() |
void | disconnected() |
void | errorChanged(QMqttClient::ClientError error) |
void | hostnameChanged(QString hostname) |
void | keepAliveChanged(quint16 keepAlive) |
void | messageReceived(const QByteArray &message, const QMqttTopicName &topic = QMqttTopicName()) |
void | messageSent(qint32 id) |
void | messageStatusChanged(qint32 id, QMqtt::MessageStatus s, const QMqttMessageStatusProperties &properties) |
void | passwordChanged(QString password) |
void | pingResponseReceived() |
void | portChanged(quint16 port) |
void | protocolVersionChanged(QMqttClient::ProtocolVersion protocolVersion) |
void | stateChanged(QMqttClient::ClientState state) |
void | usernameChanged(QString username) |
void | willMessageChanged(QByteArray willMessage) |
void | willQoSChanged(quint8 willQoS) |
void | willRetainChanged(bool willRetain) |
void | willTopicChanged(QString willTopic) |
詳細説明
MQTT クライアントとは、MQTT を使用して MQTT サーバー(ブローカーとも呼ばれる)へのネットワーク接続を作成するプログラムまたはデバイスのことである。接続要求には、一意のクライアント識別子を含める必要がある。オプションで、Will Topic、Will Message、ユーザー名、パスワードを含むことができる。
接続が作成されると、クライアントは他のクライアントが受信に興味を持ちそうなメッセージを送信したり、トピックに関する通知を要求するためにサブスクライブしたり、通知の要求を削除するためにアンサブスクライブしたり、ブローカから切断したりすることができます。
メンバータイプのドキュメント
enum QMqttClient::ClientError
この列挙型は、クライアントのエラー状態を指定する。
定数 | 値 | 説明 |
---|---|---|
QMqttClient::NoError | 0 | エラーは発生しませんでした。 |
QMqttClient::InvalidProtocolVersion | 1 | ブローカは指定されたプロトコルバージョンを使用した接続を受け付けません。 |
QMqttClient::IdRejected | 2 | クライアント ID が不正です。これは長さに関連している可能性があります。 |
QMqttClient::ServerUnavailable | 3 | ネットワーク接続は確立されているが、ブローカ側でサービスが利用できない。 |
QMqttClient::BadUsernameOrPassword | 4 | ユーザー名またはパスワードのデータが不正です。 |
QMqttClient::NotAuthorized | 5 | クライアントは接続を許可されていません。 |
QMqttClient::TransportInvalid | 256 | 基礎となるトランスポートがエラーを起こした。たとえば、接続が予期せず中断された。 |
QMqttClient::ProtocolViolation | 257 | クライアントがプロトコル違反に遭遇したため、接続を切断した。 |
QMqttClient::UnknownError | 258 | 不明なエラーが発生しました。 |
QMqttClient::Mqtt5SpecificError | 259 | エラーは MQTT プロトコル・レベル 5 に関連している。理由コードで詳細を確認できる。 |
enum QMqttClient::ClientState
この列挙型は、クライアントが入ることのできる状態を指定する。
定数 | 値 | 説明 |
---|---|---|
QMqttClient::Disconnected | 0 | クライアントはブローカーから切断されています。 |
QMqttClient::Connecting | 1 | 接続要求が行われましたが、ブローカはまだ接続を承認していません。 |
QMqttClient::Connected | 2 | クライアントはブローカーに接続されています。 |
enum QMqttClient::ProtocolVersion
この列挙型は、ブローカとの通信時に使用する MQTT 標準のプロトコルバージョンを指定します。
定数 | 値 | 説明 |
---|---|---|
QMqttClient::MQTT_3_1 | 3 | MQTT 標準 3.1 |
QMqttClient::MQTT_3_1_1 | 4 | MQTT 規格 3.1.1、一般にはバージョン 4 と呼ばれる。 |
QMqttClient::MQTT_5_0 | 5 | MQTT標準5.0 |
enum QMqttClient::TransportType
この列挙型は、ブローカーへの接続をインスタンス化する際に使用する接続メソッドを指定します。
定数 | 値 | 説明 |
---|---|---|
QMqttClient::IODevice | 0 | トランスポートはQIODevice に基づいたクラスを使用する。 |
QMqttClient::AbstractSocket | 1 | トランスポートはQAbstractSocket に基づいたクラスを使用する。 |
QMqttClient::SecureSocket | 2 | トランスポートはQSslSocket に基づいたクラスを使用する。 |
プロパティ ドキュメント
autoKeepAlive : bool
このプロパティは、クライアントがサーバへのキープアライブ・メッセージを自動的に管理す るかどうかを保持する。
このプロパティがtrue
の場合、クライアントはkeepAlive の間隔で自動的にサーバに ping メッセージを送信します。
そうでない場合、ユーザは指定された接続間隔内に手動でrequestPing を呼び出す必要があります。間隔内に ping が送信されなかった場合、サーバは接続を切断します。
このプロパティのデフォルトはtrue
である。
アクセス関数:
bool | autoKeepAlive() const |
void | setAutoKeepAlive(bool autoKeepAlive) |
Notifier シグナル:
void | autoKeepAliveChanged(bool autoKeepAlive) |
keepAlive()、requestPing()、serverConnectionProperties()、pingResponseReceived()も参照 。
cleanSession : bool
このプロパティは、ブローカーに接続した後の状態を保持する。
アクセス関数:
bool | cleanSession() const |
void | setCleanSession(bool cleanSession) |
通知シグナル
void | cleanSessionChanged(bool cleanSession) |
clientId : QString
このプロパティはクライアントの識別子値を保持する。
各クライアントは、MQTT ブローカーに接続するために一意の ID を持つ必要があります。ユーザーによってクライアント ID が指定されていない場合は、接続が確立されたときに自動的に生成されます。
アクセス機能
QString | clientId() const |
void | setClientId(const QString &clientId) |
通知シグナル
void | clientIdChanged(QString clientId) |
error : ClientError
クライアントの現在のエラーを指定します。
アクセス関数:
QMqttClient::ClientError | error() const |
void | setError(QMqttClient::ClientError error) |
通知シグナル
void | errorChanged(QMqttClient::ClientError error) |
hostname : QString
このプロパティは、接続する MQTT ブローカのホスト名を保持する。
setTransport() でトランスポートが指定されていない場合、クライアントは指定されたホスト名自身へのソケット接続をインスタンス化します。
アクセス関数:
QString | hostname() const |
void | setHostname(const QString &hostname) |
Notifier シグナル:
void | hostnameChanged(QString hostname) |
keepAlive : quint16
このプロパティは、ブローカーに定期的に ping メッセージを送信する間隔を保持します。
ブローカーへの接続が確立されると、クライアントは頻繁に更新を送信して、まだ到達可能であることを伝播する必要があります。これらの更新の間隔はこのプロパティで指定します。
間隔は秒単位で指定します。
猶予期間内にブローカーから応答がない場合、接続は切断されます。
アクセス関数
quint16 | keepAlive() const |
void | setKeepAlive(quint16 keepAlive) |
Notifier シグナル:
void | keepAliveChanged(quint16 keepAlive) |
autoKeepAlive(),requestPing(),pingResponseReceived()も参照のこと 。
password : QString
このプロパティは、ブローカーに接続するためのパスワードを保持する。
アクセス関数:
QString | password() const |
void | setPassword(const QString &password) |
Notifier シグナル:
void | passwordChanged(QString password) |
port : quint16
このプロパティは、MQTT ブローカに接続するポートを保持する。
setTransport() でトランスポートが指定されていない場合、クライアントはこのポート番号のホストへのソケット接続をインスタンス化します。
アクセス関数:
quint16 | port() const |
void | setPort(quint16 port) |
Notifier シグナル:
void | portChanged(quint16 port) |
protocolVersion : ProtocolVersion
このプロパティは、接続に使用する MQTT 標準のバージョンを保持する。
クライアントがブローカーへの接続に使用する標準のバージョンを指定します。有効な値は以下のとおり:
- 3: MQTT標準バージョン3.1。
- 4: MQTT 標準バージョン 3.1.1(しばしば MQTT 4 と呼ばれる)。
- 5: MQTTスタンダード5.0。
アクセス機能:
QMqttClient::ProtocolVersion | protocolVersion() const |
void | setProtocolVersion(QMqttClient::ProtocolVersion protocolVersion) |
通知シグナル:
void | protocolVersionChanged(QMqttClient::ProtocolVersion protocolVersion) |
state : ClientState
このプロパティは、クライアントの現在の状態を保持する。
アクセス関数:
QMqttClient::ClientState | state() const |
void | setState(QMqttClient::ClientState state) |
通知シグナル
void | stateChanged(QMqttClient::ClientState state) |
username : QString
このプロパティは、ブローカーに接続するためのユーザー名を保持する。
アクセス関数:
QString | username() const |
void | setUsername(const QString &username) |
Notifier シグナル:
void | usernameChanged(QString username) |
willMessage : QByteArray
このプロパティは遺言メッセージのペイロードを保持します。
アクセス関数:
QByteArray | willMessage() const |
void | setWillMessage(const QByteArray &willMessage) |
通知シグナル
void | willMessageChanged(QByteArray willMessage) |
willQoS : quint8
このプロパティは、Will Message の送信と保存の QoS レベルを保持する。
アクセス関数:
quint8 | willQoS() const |
void | setWillQoS(quint8 willQoS) |
通知シグナル
void | willQoSChanged(quint8 willQoS) |
willRetain : bool
このプロパティは、遺言メッセージを将来の購読者が受信できるようにブローカーに保持するかどうかを保持します。
アクセス関数:
bool | willRetain() const |
void | setWillRetain(bool willRetain) |
Notifier シグナル:
void | willRetainChanged(bool willRetain) |
willTopic : QString
このプロパティはウィル・トピックを保持する。
アクセス関数です:
QString | willTopic() const |
void | setWillTopic(const QString &willTopic) |
通知シグナル:
void | willTopicChanged(QString willTopic) |
メンバー関数ドキュメント
[explicit]
QMqttClient::QMqttClient(QObject *parent = nullptr)
指定したparent で新しい MQTT クライアントインスタンスを作成する。
[override virtual noexcept]
QMqttClient::~QMqttClient()
MQTT クライアントを削除する。MQTT クライアントがまだ MQTT ブローカから切断されていない場合は、自動的に切断される。
void QMqttClient::authenticate(const QMqttAuthenticationProperties &prop)
ブローカーに認証リクエストを送信する。prop 認証リクエストに必要な情報を指定する。
この関数は、QMqttClient::authenticationRequested シグナルが発信された後にのみコールする。
注意: 拡張認証は MQTT 5.0 標準の一部であり、クライアントがMQTT_5_0 をProtocolVersion と指定した場合にのみ使用できる。
authenticationRequested() およびauthenticationFinished()も参照のこと 。
[signal]
void QMqttClient::authenticationFinished(const QMqttAuthenticationProperties &p)
このシグナルは、拡張認証が終了した後に発せられる。p は、認証プロセスに関する利用可能な詳細を指定する。
認証成功後、QMqttClient::connected が発行される。
注意: 拡張認証は MQTT 5.0 標準の一部であり、クライアントがMQTT_5_0 をProtocolVersion として指定した場合にのみ使用できる。
authenticationRequested() およびauthenticate()も参照のこと 。
[signal]
void QMqttClient::authenticationRequested(const QMqttAuthenticationProperties &p)
このシグナルは、クライアントがQMqttClient::connectToHost またはQMqttClient::connectToHostEncrypted を呼び出した後、接続が確立する前に発行される。QMqttClient::authenticate p は、ブローカが提供するプロパティを指定します。
注意: 拡張認証は MQTT 5.0 標準の一部であり、クライアントがMQTT_5_0 をProtocolVersion と指定した場合にのみ使用できる。
authenticationFinished() およびauthenticate()も参照のこと 。
[signal]
void QMqttClient::brokerSessionRestored()
このシグナルは、クライアントがcleanSession プロパティをfalse
に設定してブローカーへの接続に成功し、ブローカーがセッションをリストアした後に発行されます。
クライアントが以前に同じclientId を使って接続したことがある場合、セッションをリストアできます。
[invokable]
void QMqttClient::connectToHost()
MQTT ブローカへの接続を開始する。
注意: この関数はメタオブジェクトシステムや QML から呼び出すことができます。Q_INVOKABLE を参照。
void QMqttClient::connectToHostEncrypted(const QSslConfiguration &conf)
MQTT ブローカとの暗号化接続を開始する。
conf 接続に使用する SSL 設定を指定します。
[signal]
void QMqttClient::connected()
このシグナルは、接続が確立されたときに発せられる。
QMqttConnectionProperties QMqttClient::connectionProperties() const
クライアントがブローカーに要求した接続プロパティを返す。
注意: QMqttConnectionProperties は、クライアントがMQTT_5_0 をProtocolVersion と指定した場合にのみ使用できます。
setConnectionProperties()も参照してください 。
[invokable]
void QMqttClient::disconnectFromHost()
MQTT ブローカとの接続を切断する。
注意: この関数はメタオブジェクトシステムや QML からも呼び出すことができる。Q_INVOKABLE を参照。
[signal]
void QMqttClient::disconnected()
このシグナルは、コネクションがクローズされたときに発行されます。コネクションがクローズされるのは、disconnectFromHost() がコールされたときか、ブローカーが切断したときです。
QMqttLastWillProperties QMqttClient::lastWillProperties() const
最後のウィルプロパティを返す。
注意: QMqttLastWillProperties は、クライアントがMQTT_5_0 をProtocolVersion と指定した場合にのみ使用できます。
setLastWillProperties()も参照してください 。
[signal]
void QMqttClient::messageReceived(const QByteArray &message, const QMqttTopicName &topic = QMqttTopicName())
このシグナルは、新しいメッセージを受信したときに発せられる。メッセージのカテゴリーはtopic で指定され、内容はmessage である。
[signal]
void QMqttClient::messageSent(qint32 id)
publish() 関数で送信されたメッセージがブローカーによって受信されたことを示す。id はpublish()
が返すものと同じで、メッセージのステータスを追跡するのに役立ちます。
[signal]
void QMqttClient::messageStatusChanged(qint32 id, QMqtt::MessageStatus s, const QMqttMessageStatusProperties &properties)
このシグナルは、id で識別されるメッセー ジのステータスが変更されたときに発信される。s はメッセージの新しいステータスを指定し、properties はサーバーが提供する追加プロパティを指定する。
[signal]
void QMqttClient::pingResponseReceived()
このシグナルは、ブローカがrequestPing() 呼び出しまたはkeepAlive() ping メッセージに応答し、接続がまだ有効である場合に発行されます。
[invokable]
qint32 QMqttClient::publish(const QMqttTopicName &topic, const QByteArray &message = QByteArray(), quint8 qos = 0, bool retain = false)
message topic qos はメッセージ転送に必要な QoS レベルを指定します。
retain がtrue
に設定されている場合、メッセージは他のクライアントが接続してメッセージを受信できるようにブローカーに留まります。
メッセージを識別するために内部的に使用される ID を返します。
注: この関数はメタオブジェクトシステム経由でも QML からでも呼び出すことができます。Q_INVOKABLE を参照してください。
[invokable]
qint32 QMqttClient::publish(const QMqttTopicName &topic, const QMqttPublishProperties &properties, const QByteArray &message = QByteArray(), quint8 qos = 0, bool retain = false)
properties とtopic を指定してmessage をブローカーに発行します。qos はメッセージ転送に必要な QoS レベルを指定します。
retain がtrue
に設定されている場合、メッセージは他のクライアントが接続してメッセージを受信できるようにブローカーに留まります。
メッセージを識別するために内部的に使用される ID を返します。
注意: properties がブローカに渡されるのは、クライアントがMQTT_5_0 をProtocolVersion と指定した場合のみです。
注意: この関数はメタオブジェクトシステムや QML から呼び出すことができます。Q_INVOKABLE を参照してください。
bool QMqttClient::requestPing()
ブローカーに ping メッセージを送信し、応答を期待する。
接続がアクティブでautoKeepAlive がtrue
の場合、クライアントがこの処理を管理するため、この関数の呼び出しは失敗します。
手動でrequestPing()
を使用するには、接続がアクティブである限り、keepAlive 間隔で毎回呼び出す必要があります。
pingが成功したかどうかを確認するには、pingResponseReceived() シグナルに接続する。
ping 要求を送信できた場合はtrue
を返す。
pingResponseReceived()、autoKeepAlive()、keepAlive()も参照のこと 。
QMqttServerConnectionProperties QMqttClient::serverConnectionProperties() const
接続試行後にブローカが返したQMqttServerConnectionProperties を返します。
これは、QMqttClient::setConnectionProperties で設定したクライアント側の接続プロパティがブローカに受け入れられたかどうかを確認するために使用できます。また、接続試行に失敗した場合、接続診断に使用することもできます。
注意: QMqttServerConnectionProperties は、クライアントがMQTT_5_0 をProtocolVersion と指定した場合にのみ使用できます。
connectionProperties()も参照してください 。
void QMqttClient::setConnectionProperties(const QMqttConnectionProperties &prop)
接続プロパティをprop に設定する。QMqttConnectionProperties を使用して、特定の機能セットを使用するようサーバーに要求することができる。接続要求の後、QMqttClient::serverConnectionProperties を呼び出すことで、サーバー応答を取得できる。
注: 接続プロパティは、MQTT クライアントがDisconnected 状態の場合にのみ設定できる。
注: QMqttConnectionProperties は、クライアントがMQTT_5_0 をProtocolVersion と指定した場合にのみ使用できる。
connectionProperties()も参照のこと 。
void QMqttClient::setLastWillProperties(const QMqttLastWillProperties &prop)
prop QMqttLastWillProperties では、ブローカに保存されるラストウィルメッセージの追加機能を設定できます。
注意: 接続プロパティは、MQTT クライアントがDisconnected の状態の場合のみ設定できます。
注: QMqttLastWillProperties は、クライアントがMQTT_5_0 をProtocolVersion と指定した場合にのみ使用できます。
lastWillProperties()も参照のこと 。
void QMqttClient::setTransport(QIODevice *device, QMqttClient::TransportType transport)
トランスポートをdevice に設定する。トランスポートはソケットタイプまたはQIODevice から派生したものであり、transport で指定される。
注意 : トランスポートを交換できるのは、MQTTクライアントがDisconnected 状態の場合のみである。
注意 : クライアントにカスタムトランスポートを設定しても、コネクション管理 の責任は引き継がれない。QMqttClient::connectToHost()を呼び出す前に、QIODevice ベースのトランスポートの場合はトランスポートをオープンし、ソケットタイプの トランスポートの場合はトランスポートを接続しなければならない。
transport()も参照のこと 。
QMqttSubscription *QMqttClient::subscribe(const QMqttTopicFilter &topic, quint8 qos = 0)
topic の通知を受け取るための新しいサブスクリプションを追加する。パラメータqos は、セキュリティ・メッセージを受信するレベルを指定する。利用可能な QoS レベルの詳細については、QoS を参照してください。
この関数はQMqttSubscription へのポインタを返す。同じトピックが二度サブスクライブされた場合、返り値は同じサブスクリプションインスタンスを指す。MQTT クライアントはサブスクリプションのオーナーである。
QMqttSubscription *QMqttClient::subscribe(const QMqttTopicFilter &topic, const QMqttSubscriptionProperties &properties, quint8 qos = 0)
topic で通知を受け取るための新しいサブスクリプションを追加する。パラメータproperties は、ブローカが検証する追加のサブスクリプションプロパティを指定する。パラメータqos は、セキュリティメッセージを受信するレベルを指定する。利用可能な QoS レベルの詳細については、QoS を参照のこと。
この関数はQMqttSubscription へのポインタを返す。 同じトピックが二度サブスクライブされた場合、戻り値は同じサブスクリプションイン スタンスを指す。MQTT クライアントはサブスクリプションのオーナーである。
注意: properties は、クライアントがMQTT_5_0 をProtocolVersion と指定したときのみブローカーに渡される。
QIODevice *QMqttClient::transport() const
ブローカーとの通信に使用するトランスポートを返します。
setTransport()も参照 ください。
void QMqttClient::unsubscribe(const QMqttTopicFilter &topic)
topic からの購読を解除します。subscribe() をコールして作成された購読には、通知は送信されません。
注意: クライアントが購読を解除せずにブローカーから切断した場合、ブローカーはすべてのメッセージを保存し、次の再接続時に発行します。
void QMqttClient::unsubscribe(const QMqttTopicFilter &topic, const QMqttUnsubscriptionProperties &properties)
topic からの購読を解除します。subscribe() をコールして作成された購読には、通知は送信されません。properties は、ブローカに渡す追加のユーザープロパティを指定します。
注意 : クライアントが購読を解除せずにブローカーから切断した場合、ブローカーはすべてのメッセージを保存し、次の再接続時に発行します。
注意: properties は、クライアントがMQTT_5_0 をProtocolVersion と指定した場合のみ、ブローカーに渡されます。
© 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.