2021-06-23 QT C++ mqtt 客户端 上位机完整注释

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();
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值