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::NoError0エラーは発生しませんでした。
QMqttClient::InvalidProtocolVersion1ブローカは指定されたプロトコルバージョンを使用した接続を受け付けません。
QMqttClient::IdRejected2クライアント ID が不正です。これは長さに関連している可能性があります。
QMqttClient::ServerUnavailable3ネットワーク接続は確立されているが、ブローカ側でサービスが利用できない。
QMqttClient::BadUsernameOrPassword4ユーザー名またはパスワードのデータが不正です。
QMqttClient::NotAuthorized5クライアントは接続を許可されていません。
QMqttClient::TransportInvalid256基礎となるトランスポートがエラーを起こした。たとえば、接続が予期せず中断された。
QMqttClient::ProtocolViolation257クライアントがプロトコル違反に遭遇したため、接続を切断した。
QMqttClient::UnknownError258不明なエラーが発生しました。
QMqttClient::Mqtt5SpecificError259エラーは MQTT プロトコル・レベル 5 に関連している。理由コードで詳細を確認できる。

enum QMqttClient::ClientState

この列挙型は、クライアントが入ることのできる状態を指定する。

定数説明
QMqttClient::Disconnected0クライアントはブローカーから切断されています。
QMqttClient::Connecting1接続要求が行われましたが、ブローカはまだ接続を承認していません。
QMqttClient::Connected2クライアントはブローカーに接続されています。

enum QMqttClient::ProtocolVersion

この列挙型は、ブローカとの通信時に使用する MQTT 標準のプロトコルバージョンを指定します。

定数説明
QMqttClient::MQTT_3_13MQTT 標準 3.1
QMqttClient::MQTT_3_1_14MQTT 規格 3.1.1、一般にはバージョン 4 と呼ばれる。
QMqttClient::MQTT_5_05MQTT標準5.0

enum QMqttClient::TransportType

この列挙型は、ブローカーへの接続をインスタンス化する際に使用する接続メソッドを指定します。

定数説明
QMqttClient::IODevice0トランスポートはQIODevice に基づいたクラスを使用する。
QMqttClient::AbstractSocket1トランスポートはQAbstractSocket に基づいたクラスを使用する。
QMqttClient::SecureSocket2トランスポートは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_0ProtocolVersion と指定した場合にのみ使用できる。

authenticationRequested() およびauthenticationFinished()も参照のこと

[signal] void QMqttClient::authenticationFinished(const QMqttAuthenticationProperties &p)

このシグナルは、拡張認証が終了した後に発せられる。p は、認証プロセスに関する利用可能な詳細を指定する。

認証成功後、QMqttClient::connected が発行される。

注意: 拡張認証は MQTT 5.0 標準の一部であり、クライアントがMQTT_5_0ProtocolVersion として指定した場合にのみ使用できる。

authenticationRequested() およびauthenticate()も参照のこと

[signal] void QMqttClient::authenticationRequested(const QMqttAuthenticationProperties &p)

このシグナルは、クライアントがQMqttClient::connectToHost またはQMqttClient::connectToHostEncrypted を呼び出した後、接続が確立する前に発行される。QMqttClient::authenticate p は、ブローカが提供するプロパティを指定します。

注意: 拡張認証は MQTT 5.0 標準の一部であり、クライアントがMQTT_5_0ProtocolVersion と指定した場合にのみ使用できる。

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_0ProtocolVersion と指定した場合にのみ使用できます。

setConnectionProperties()も参照してください

[invokable] void QMqttClient::disconnectFromHost()

MQTT ブローカとの接続を切断する。

注意: この関数はメタオブジェクトシステムや QML からも呼び出すことができる。Q_INVOKABLE を参照。

[signal] void QMqttClient::disconnected()

このシグナルは、コネクションがクローズされたときに発行されます。コネクションがクローズされるのは、disconnectFromHost() がコールされたときか、ブローカーが切断したときです。

QMqttLastWillProperties QMqttClient::lastWillProperties() const

最後のウィルプロパティを返す。

注意: QMqttLastWillProperties は、クライアントがMQTT_5_0ProtocolVersion と指定した場合にのみ使用できます。

setLastWillProperties()も参照してください

[signal] void QMqttClient::messageReceived(const QByteArray &message, const QMqttTopicName &topic = QMqttTopicName())

このシグナルは、新しいメッセージを受信したときに発せられる。メッセージのカテゴリーはtopic で指定され、内容はmessage である。

[signal] void QMqttClient::messageSent(qint32 id)

publish() 関数で送信されたメッセージがブローカーによって受信されたことを示す。idpublish() が返すものと同じで、メッセージのステータスを追跡するのに役立ちます。

[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 レベルを指定します。

retaintrue に設定されている場合、メッセージは他のクライアントが接続してメッセージを受信できるようにブローカーに留まります。

メッセージを識別するために内部的に使用される ID を返します。

注: この関数はメタオブジェクトシステム経由でも QML からでも呼び出すことができます。Q_INVOKABLE を参照してください。

[invokable] qint32 QMqttClient::publish(const QMqttTopicName &topic, const QMqttPublishProperties &properties, const QByteArray &message = QByteArray(), quint8 qos = 0, bool retain = false)

propertiestopic を指定してmessage をブローカーに発行します。qos はメッセージ転送に必要な QoS レベルを指定します。

retaintrue に設定されている場合、メッセージは他のクライアントが接続してメッセージを受信できるようにブローカーに留まります。

メッセージを識別するために内部的に使用される ID を返します。

注意: properties がブローカに渡されるのは、クライアントがMQTT_5_0ProtocolVersion と指定した場合のみです。

注意: この関数はメタオブジェクトシステムや QML から呼び出すことができます。Q_INVOKABLE を参照してください。

bool QMqttClient::requestPing()

ブローカーに ping メッセージを送信し、応答を期待する。

接続がアクティブでautoKeepAlivetrue の場合、クライアントがこの処理を管理するため、この関数の呼び出しは失敗します。

手動でrequestPing() を使用するには、接続がアクティブである限り、keepAlive 間隔で毎回呼び出す必要があります。

pingが成功したかどうかを確認するには、pingResponseReceived() シグナルに接続する。

ping 要求を送信できた場合はtrue を返す。

pingResponseReceived()、autoKeepAlive()、keepAlive()も参照のこと

QMqttServerConnectionProperties QMqttClient::serverConnectionProperties() const

接続試行後にブローカが返したQMqttServerConnectionProperties を返します。

これは、QMqttClient::setConnectionProperties で設定したクライアント側の接続プロパティがブローカに受け入れられたかどうかを確認するために使用できます。また、接続試行に失敗した場合、接続診断に使用することもできます。

注意: QMqttServerConnectionProperties は、クライアントがMQTT_5_0ProtocolVersion と指定した場合にのみ使用できます。

connectionProperties()も参照してください

void QMqttClient::setConnectionProperties(const QMqttConnectionProperties &prop)

接続プロパティをprop に設定する。QMqttConnectionProperties を使用して、特定の機能セットを使用するようサーバーに要求することができる。接続要求の後、QMqttClient::serverConnectionProperties を呼び出すことで、サーバー応答を取得できる。

注: 接続プロパティは、MQTT クライアントがDisconnected 状態の場合にのみ設定できる。

注: QMqttConnectionProperties は、クライアントがMQTT_5_0ProtocolVersion と指定した場合にのみ使用できる。

connectionProperties()も参照のこと

void QMqttClient::setLastWillProperties(const QMqttLastWillProperties &prop)

prop QMqttLastWillProperties では、ブローカに保存されるラストウィルメッセージの追加機能を設定できます。

注意: 接続プロパティは、MQTT クライアントがDisconnected の状態の場合のみ設定できます。

注: QMqttLastWillProperties は、クライアントがMQTT_5_0ProtocolVersion と指定した場合にのみ使用できます。

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_0ProtocolVersion と指定したときのみブローカーに渡される。

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_0ProtocolVersion と指定した場合のみ、ブローカーに渡されます。

© 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.