Qt MQTT使用
一、創建對象并綁定信號槽
m_client = new QMqttClient(this); connect(m_client, &QMqttClient::stateChanged, this, &MainWindow::updateLogStateChange); connect(m_client, &QMqttClient::disconnected, this, &MainWindow::brokerDisconnected); connect(m_client, &QMqttClient::connected, this, &MainWindow::brokerConnected); connect(m_client, &QMqttClient::messageReceived, this, &MainWindow::brokerMessageRecvd); connect(m_client, &QMqttClient::pingResponseReceived, this, &MainWindow::brokerPingResponseRecvd);二、訂閱主題
//do Subsciption auto subscription = m_client->subscribe(QString("sss"), 0); if(!subscription){//failure } else{//success }三、取消訂閱
//do unSubsciption m_client->unsubscribe(topic);四、連接服務器
void MainWindow::connectServ() {if (m_client->state() == QMqttClient::Disconnected) {m_client->setHostname(ui->lineEdit_hostip->text());m_client->setPort(ui->lineEdit_hostport->text().toInt());m_client->setUsername(ui->lineEdit_username->text());m_client->setPassword(ui->lineEdit_password->text());m_client->setClientId(ui->lineEdit_clientid->text());m_client->setAutoKeepAlive(true);//mqtt willm_client->setWillTopic(WILLTOPIC);m_client->setWillQoS(1);QString willMessage = ui->lineEdit_clientid->text()+","+ui->lineEdit_username->text()+","+"loginout";m_client->setWillMessage(willMessage.toLatin1());m_client->connectToHost();} }五、斷開服務器
void MainWindow::disConnectServ() {if (m_client->state() == QMqttClient::Connected){m_client->disconnectFromHost();} }六、其他槽函數
void MainWindow::updateLogStateChange() {const QString content = QDateTime::currentDateTime().toString()+ QLatin1String(": State Change")+ QString::number(m_client->state())+ QLatin1Char('\n');ui->textEdit->insertPlainText(content); }void MainWindow::brokerDisconnected() {const QString content = QDateTime::currentDateTime().toString()+ QLatin1String(": disconnected\n");ui->textEdit->insertPlainText(content); } void MainWindow::brokerConnected() {const QString content = QDateTime::currentDateTime().toString()+ QLatin1String(": connected\n");ui->textEdit->insertPlainText(content); } void MainWindow::brokerMessageRecvd(const QByteArray &message, const QMqttTopicName &topic) {//insert to log textconst QString content = QDateTime::currentDateTime().toString()+ QLatin1String(" Received Topic: ")+ topic.name()+ QLatin1String(" Message: ")+ message+ QLatin1Char('\n');ui->textEdit->insertPlainText(content); } void MainWindow::brokerPingResponseRecvd() {const QString content = QDateTime::currentDateTime().toString()+ QLatin1String(": pingresponse valid")+ QLatin1Char('\n');ui->textEdit->insertPlainText(content); }?
總結
- 上一篇: asp点击按钮sql列求和_助你2020
- 下一篇: QT出现“undefined refer