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; }