Connexió del frontal en QML amb el rerefons en C++
Salta a la navegació
Salta a la cerca
main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include "rerefons.h"
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
qmlRegisterType<RereFons>("desDel.rerefons",1,0,"RereFons");
QQmlApplicationEngine engine;
QObject::connect(
&engine,
&QQmlApplicationEngine::objectCreationFailed,
&app,
[]() { QCoreApplication::exit(-1); },
Qt::QueuedConnection);
engine.loadFromModule("dynView14", "Main");
return app.exec();
}
rerefons.h
- Propietats (Q_PROPERTY)
class RereFons : public QObject
{
Q_OBJECT
Q_PROPERTY(QString tiBroker READ tiBroker WRITE setTiBroker NOTIFY brokerCanviat)
Q_PROPERTY(QString tiBrokerUsr READ tiBrokerUsr WRITE setTiBrokerUsr NOTIFY brokerCanviat)
Q_PROPERTY(QString tiBrokerPwd READ tiBrokerPwd WRITE setTiBrokerPwd NOTIFY brokerCanviat)
Q_PROPERTY(QString szPublica WRITE setPublica)
Q_PROPERTY(QString szRebut READ szRebut NOTIFY mqttRebut)
Q_PROPERTY(int nCmpt READ nCmpt WRITE setCmpt NOTIFY cmptChanged)
...
public:
QString tiBroker();
void setTiBroker(const QString &szValue);
QString tiBrokerUsr();
void setTiBrokerUsr(const QString &szValue);
QString tiBrokerPwd();
void setTiBrokerPwd(const QString &szValue);
void setPublica(const QString &szValue);
QString szRebut();
int nCmpt();
void setCmpt(const int &nC);
...
signals:
void brokerCanviat();
void cmptChanged();
void vSignalMqttConnected();
void vSignalMqttConnecting();
void vSignalMqttDisconnected();
void mqttRebut();
...
- Exposició de mètodes (Q_INVOKABLE)
Q_INVOKABLE void saveMacs();
rerefons.cpp
#include "rerefons.h"
RereFons::RereFons(QObject *parent) : QObject(parent)
{
m_bMqttConnected = false;
timer = new QTimer(this);
connect(timer,SIGNAL(timeout()),
this,SLOT(vActualitza()));
timer->start(500);
mqtt = new MqttBasic;
connect(mqtt,SIGNAL(vSignalMqttConnected()),this,SIGNAL(vSignalMqttConnected()));
connect(mqtt,SIGNAL(vSignalMqttConnecting()),this,SIGNAL(vSignalMqttConnecting()));
connect(mqtt,SIGNAL(vSignalMqttDisconnected()),this,SIGNAL(vSignalMqttDisconnected()));
connect(mqtt,SIGNAL(vSignalMqttDisconnected()),this,SLOT(vMqttDesconnectat()));
connect(mqtt,SIGNAL(vSignalMqttConnected()),this,SLOT(vSubscripcions()));
connect(mqtt,SIGNAL(vSignalMqttMsgRcv(QString,QString)),this,SLOT(vMqttRebut(QString,QString)));
Main.qml
import QtQuick
import QtQuick.Controls
import desDel.rerefons 1.0
Window {
id: finestra
width: 905
height: 480
visible: true
title: qsTr("dynView14")
property var tiPwd: rf.tiBrokerPwd
property var tiUsr: rf.tiBrokerUsr
property var tiBroker: rf.tiBroker
property var tiMac: "HMI"
property bool bMqttConnected: false
property int uiCheckedHeartBeats: 255
signal senyalCanviSettingsMacPlc(int index,string preg,string resp)
signal senyalCanviSettingsBroker(int index,string preg,string resp)
Connections{
target: finestra
function onSenyalCanviSettingsBroker(nIndex,sPreg,sResp){
//console.log("senyalCanviSettingsBroker");
switch(nIndex){
case 0: idSettings00.dades["brokerPort"] = sResp;
console.log("idSettings00.dades[\"brokerPort\"] = "+sResp);
break;
case 1: idSettings00.dades["user"] = sResp;
console.log("idSettings00.dades[\"user\"] = "+sResp);
break;
case 2: idSettings00.dades["password"] = sResp;
console.log("idSettings00.dades[\"password\"] = "+sResp);
break;
default: console.log("No entenc canvis al broker");
}
}
}
RereFons{
id: rf
onVSignalMqttConnected: {
console.log("MQTT connectat!");
lbEstatMqtt.color = "#00ff00";
lbEstatMqtt.text = "Connectat!";
btConnecta.text = "Desconnecta";
finestra.bMqttConnected = true;
btSettings.visible = false;
}