private:
Ui::MainWindow *ui; //主窗口ui
QMQTT::Client * client; //声明为客户端模式
private slots: //接口
//mqtt 接收操作
void onMQTT_Received(const QMQTT::Message &message);
//mqtt 提交操作
void onMQTT_subscribed(const QString& topic);
//创建客户端 并映射
client = new Client();
//连接
connect(client,SIGNAL(received(const QMQTT::Message&)),this,SLOT(onMQTT_Received(const QMQTT::Message&)));
//提交
connect(client,SIGNAL(subscribed(const QString&)),this,SLOT(onMQTT_subscribed(const QString&)));
//窗口接收操作
void MainWindow::onMQTT_Received(const
QMQTT::Message &message)
{
// 字符加载 触发 取出信息参数
QString strPaylaod = message.payload();
//QMessageBox::warning(this,"payload",strPaylaod,QMessageBox::Yes,QMessageBox::No);
//ui界面文本刷新
QString strLine = ui->textBrowser_msg->toPlainText();
//获取当前时间
QDateTime dt = QDateTime::currentDateTime();
QString strDate = dt.toString(Qt::SystemLocaleLongDate);//日期格式自定义
//填充 strline
strLine += "\n";
strLine += strDate;
strLine += "\n";
strLine += strPaylaod;
//映射 strline
ui->textBrowser_msg->setText(strLine);
}
//窗体提交操作
void MainWindow::onMQTT_subscribed(const QString &topic)
{
// topic 读入
qDebug() << topic;
//窗体显示
QMessageBox::warning(this,"订阅成功",topic,QMessageBox::Yes);
}
//点击发送功能
void MainWindow::on_buttonConnect_clicked()
{
//需先判断状态否则会在启用后断开先收到信息
//获取客户端状态
if (m_client->state() == QMqttClient::Disconnected) {
//设置断开标志
ui->lineEditHost->setEnabled(false);
ui->spinBoxPort->setEnabled(false);
//按钮字符赋值断开
ui->buttonConnect->setText(tr("Disconnect"));
//操作自旋锁 反转
//发送完毕 连接host接收
//开启 字符接收缓冲 接收
m_client->connectToHost();
} else {
//连接状态
//设置连接标志
ui->lineEditHost->setEnabled(true);
ui->spinBoxPort->setEnabled(true);
//按钮字符赋值 连接
ui->buttonConnect->setText(tr("Connect"));
//操作自旋锁 反转
//接收完毕 断开 host接收
//禁止 字符接收缓冲 发送
m_client->disconnectFromHost();
}
}
2021-06-23 QT C++ mqtt 客户端 上位机完整注释
最新推荐文章于 2024-04-21 10:25:39 发布