#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QHostAddress m_address("axxxxZcgS.iot-as-mqtt.cn-shanghai.aliyuncs.com");
client = new QMQTT::Client(m_address, 1883);
client->setClientId("12xxxx|securemode=3,signmethod=hmacsha1|");
client->setUsername("Bxxx&axxxxxgS");
client->setPassword("CD581B94148A628xxxxxxxxxx3847AE35FB");
client->setVersion(QMQTT::MQTTVersion::V3_1_1);
client->setKeepAlive(120);
connect(client,SIGNAL(connected()),this,SLOT(doprocess_connected()));
connect(client,SIGNAL(subscribed(QString,quint8)),this,SLOT(doprocess_subscribled(QString,quint8)));
connect(client,SIGNAL(received(QMQTT::Message)),this,SLOT(doprocess_receivemessage(QMQTT::Message)));
connect(client,SIGNAL(unsubscribed(QString)),this,SLOT(doprocess_unsubscrbled(QString)));
connect(client,SIGNAL(error(QMQTT::ClientError)),this,SLOT(doprocess_mqtterror(QMQTT::ClientError)));
connect(client,SIGNAL(disconnected()),this,SLOT(doprocess_disconnected()));
}
Widget::~Widget()
{
delete ui;
}
/******************
* 连接connect
* ***************/
void Widget::on_btn_connect_clicked()
{
QString ledit_address = ui->lineEdit_address->text();
int ledit_port = ui->lineEdit_port->text().toInt();
if(0 == ledit_port)
return;
client->setHostName(ledit_address);
client->setPort(ledit_port);
client->connectToHost();
}
/************************
* 发布publish
* *********************/
void Widget::on_btn_publish_clicked()
{
QByteArray m_payload = ui->textEdit_publish->toPlainText().toLatin1();
QString m_topic = ui->lineEdit_publishtopic->text();
if(m_topic.isNull())
return;
QMQTT::Message m_message(1,m_topic,m_payload);
client->publish(m_message);
}
/************************
* 订阅subscribe
* *********************/
void Widget::on_btn_subscribe_clicked()
{
QString m_topic = ui->lineEdit_subscribletopic->text();
int m_qos = ui->lineEdit_subscribleqos->text().toInt();
if(m_topic.isNull())
return;
client->subscribe(m_topic,m_qos);
}
/************************
* 清除屏幕
* *********************/
void Widget::on_btn_clear_clicked()
{
ui->textEdit_message->clear();
}
/************************
* 取消订阅unsubscribe
* *********************/
void Widget::on_btn_unsubscrible_clicked()
{
QString m_topic = ui->lineEdit_unsubscribletopic->text();
if(m_topic.isNull())
return;
client->unsubscribe(m_topic);
}
/************************
* 断开连接
* *********************/
void Widget::on_btn_disconnect_clicked()
{
client->disconnectFromHost();
}
/************************
* 连接反馈
* *********************/
void Widget::doprocess_connected()
{
ui->textEdit_message->append("server connected");
ui->btn_connect->setText("已连接");
}
/************************
* 订阅反馈
* *********************/
void Widget::doprocess_subscribled(QString topic, quint8 qos)
{
ui->textEdit_message->append(QString("topic:%1,QOS:%2,subscribled").arg(topic).arg(qos));
}
/************************
* 收到的消息
* *********************/
void Widget::doprocess_receivemessage(QMQTT::Message message)
{
ui->textEdit_message->append(QString("topic:%1,paload:%2").arg(message.topic()).arg(QString(message.payload())));
}
/************************
* 取消订阅反馈
* *********************/
void Widget::doprocess_unsubscrbled(QString topic)
{
ui->textEdit_message->append(QString("topic:%1,unsubscribled").arg(topic));
}
/************************
* mqtt错误
* *********************/
void Widget::doprocess_mqtterror(QMQTT::ClientError err)
{
ui->textEdit_message->append(QString::number(err));
}
/************************
* 断开连接
* *********************/
void Widget::doprocess_disconnected()
{
ui->textEdit_message->append("disconnected");
}