QQmlPropertyMap* gDataProp;
int main(int argc, char *argv[])
{
set_qt_environment();
QGuiApplication app(argc, argv);
ControlObjTreeModel uiObjectTreeMod;
gDataProp =new QQmlPropertyMap();
gDataProp->insert(mapNumOfSchObj,0);
QJsonObject paramObj ={{shcObjName,"K0"} };
QJsonObject paramIns[3];
QJsonObject paramOut[2];
paramIns[0]={{ portName,"IN0"} , { portID,1}};
paramIns[1]={{ portName,"IN1"} , { portID,2}};
paramIns[2]={{ portName,"IN2"} , { portID,3}};
paramOut[0]={{ portName,"Out0"} , { portID,1}};
paramOut[1]={{ portName,"Out1"} , { portID,2}};
GroupObject gIns [3];
GroupObject gOuts [2];
qDebug() <<paramObj;
knx1 =new InterfaceObject(gDataProp,¶mObj ,paramIns, paramOut, gIns,gOuts ,3,2);
paramObj[shcObjName]="Sw";
sw1 =new InterfaceObject(gDataProp,¶mObj ,paramIns, paramOut, gIns,gOuts ,3,2);
QQmlApplicationEngine engine;
const QUrl url
(u
"qrc:/qt/qml/Main/main.qml"_qs
);
&engine,
&QQmlApplicationEngine::objectCreated,
&app,
if (!obj && url == objUrl)
},
Qt::QueuedConnection);
// BOLDFACE by OP for emphasis (Mod.)
engine.rootContext()->setContextProperty("gDatPr", gDataProp );
//
engine.addImportPath(":/");
engine.load(url);
if (engine.rootObjects().isEmpty()) {
return -1;
}
return app.exec();
}
InterfaceObject:: InterfaceObject(QQmlPropertyMap * dmap ,QJsonObject* objParams
, QJsonObject* insParam , QJsonObject* outsParam,
GroupObject *inGo ,GroupObject *outGo, uint16_t numIns , uint16_t numOuts)
{
int numOfSchObj ;
schDataMap= dmap;
interfaceData= new QJsonObject (*objParams);
numOfIns=numIns;
numOfOuts=numOuts;
qDebug()<<*interfaceData;
numOfSchObj =schDataMap->value(mapNumOfSchObj).toInt();
interfaceData->insert(shcObjID,numOfSchObj+1);
ins = new InterfacePort*[numIns];
outs = new InterfacePort*[numOuts];
for (uint16_t i=0;i<numIns;i++)
{
ins [i]=new InterfacePort(insParam[i], inGo[i]);
jsonArrayIn.push_back(ins [i]->getPortObj());
}
interfaceData->insert(shcObjIns,jsonArrayIn);
interfaceData->insert(shcObjNumOfIns,numOfIns);
qDebug()<<*interfaceData;
for (uint16_t i=0;i<numOuts;i++)
{
outsParam[i].insert(pConnectionTarObjID,-2);
outsParam[i].insert(pConnectionTarPortID,-4);
outs [i]=new InterfacePort(outsParam[i], outGo[i]);
jsonArrayIn2.push_back(outs[i]->getPortObj());
}
interfaceData->insert(shcObjOuts,jsonArrayIn2);
interfaceData->insert(shcObjNumOfOuts,numOfOuts);
schDataMap->insert(*objKey , *interfaceData);
// BOLDFACE by OP for emphasis (Mod.)
schDataMap->insert( mapNumOfSchObj ,numOfSchObj+1);
schDataMap->connect(
schDataMap,
&QQmlPropertyMap::valueChanged,
this,
&InterfaceObject::updateFromGuiSlot);
// end boldface
}
QQmlPropertyMap* gDataProp;
int main(int argc, char *argv[])
{
set_qt_environment();
QGuiApplication app(argc, argv);
ControlObjTreeModel uiObjectTreeMod;
gDataProp =new QQmlPropertyMap();
gDataProp->insert(mapNumOfSchObj,0);
QJsonObject paramObj ={{shcObjName,"K0"} };
QJsonObject paramIns[3];
QJsonObject paramOut[2];
paramIns[0]={{ portName,"IN0"} , { portID,1}};
paramIns[1]={{ portName,"IN1"} , { portID,2}};
paramIns[2]={{ portName,"IN2"} , { portID,3}};
paramOut[0]={{ portName,"Out0"} , { portID,1}};
paramOut[1]={{ portName,"Out1"} , { portID,2}};
GroupObject gIns [3];
GroupObject gOuts [2];
qDebug() <<paramObj;
knx1 =new InterfaceObject(gDataProp,¶mObj ,paramIns, paramOut, gIns,gOuts ,3,2);
paramObj[shcObjName]="Sw";
sw1 =new InterfaceObject(gDataProp,¶mObj ,paramIns, paramOut, gIns,gOuts ,3,2);
QQmlApplicationEngine engine;
const QUrl url(u"qrc:/qt/qml/Main/main.qml"_qs);
QObject::connect(
&engine,
&QQmlApplicationEngine::objectCreated,
&app,
[url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
},
Qt::QueuedConnection);
// BOLDFACE by OP for emphasis (Mod.)
engine.rootContext()->setContextProperty("gDatPr", gDataProp );
//
engine.addImportPath(QCoreApplication::applicationDirPath() + "/qml");
engine.addImportPath(":/");
engine.load(url);
if (engine.rootObjects().isEmpty()) {
return -1;
}
return app.exec();
}
InterfaceObject:: InterfaceObject(QQmlPropertyMap * dmap ,QJsonObject* objParams
, QJsonObject* insParam , QJsonObject* outsParam,
GroupObject *inGo ,GroupObject *outGo, uint16_t numIns , uint16_t numOuts)
:QObject (dmap)
{
int numOfSchObj ;
schDataMap= dmap;
interfaceData= new QJsonObject (*objParams);
numOfIns=numIns;
numOfOuts=numOuts;
qDebug()<<*interfaceData;
numOfSchObj =schDataMap->value(mapNumOfSchObj).toInt();
interfaceData->insert(shcObjID,numOfSchObj+1);
ins = new InterfacePort*[numIns];
outs = new InterfacePort*[numOuts];
for (uint16_t i=0;i<numIns;i++)
{
ins [i]=new InterfacePort(insParam[i], inGo[i]);
jsonArrayIn.push_back(ins [i]->getPortObj());
}
interfaceData->insert(shcObjIns,jsonArrayIn);
interfaceData->insert(shcObjNumOfIns,numOfIns);
qDebug()<<*interfaceData;
for (uint16_t i=0;i<numOuts;i++)
{
outsParam[i].insert(pConnectionTarObjID,-2);
outsParam[i].insert(pConnectionTarPortID,-4);
outs [i]=new InterfacePort(outsParam[i], outGo[i]);
jsonArrayIn2.push_back(outs[i]->getPortObj());
}
interfaceData->insert(shcObjOuts,jsonArrayIn2);
interfaceData->insert(shcObjNumOfOuts,numOfOuts);
objKey=new QString (mapSchObjHeader + QString::number(numOfSchObj));
schDataMap->insert(*objKey , *interfaceData);
// BOLDFACE by OP for emphasis (Mod.)
schDataMap->insert( mapNumOfSchObj ,numOfSchObj+1);
schDataMap->connect(
schDataMap,
&QQmlPropertyMap::valueChanged,
this,
&InterfaceObject::updateFromGuiSlot);
// end boldface
}
To copy to clipboard, switch view to plain text mode
and in qml Side:
Bookmarks