Connecting a dynamic QMap to Qml
- 
Let's say i have a QMap<MyKey*, MyObject*> myobjects, it it possible to connect this to qml throughQQmlListProperty<MyObject>PS: MyKey is not needed in qml, wich can be thrown away with myobjects.values()but that returns a pointer to aQList<MyObjects>but that throws an segmentation error when creating qqmllistproperty
- 
Let's say i have a QMap<MyKey*, MyObject*> myobjects, it it possible to connect this to qml throughQQmlListProperty<MyObject>PS: MyKey is not needed in qml, wich can be thrown away with myobjects.values()but that returns a pointer to aQList<MyObjects>but that throws an segmentation error when creating qqmllistproperty@Maxim-DC If you don't need MyKey*in QML then you can useQVariantMapwith custom objects as values. The custom object will need to be registered first usingqmlRegisterType. Also sinceQVariantMapusesQVariantas 2nd parameter you will need to make that custom objectQVariant. To sum up,
 For eg.//register MyClass before using qmlRegisterType<MyClass>("MyClass",1,0,"MyClass"); MyClass *myclass = new MyClass; myclass->setText("MyClass Item"); //some method in MyClass //add it to QVariant QVariant var = QVariant::fromValue(myclass); //add it to QVariantMap QVariantMap map; map.insert("myclass",var); //set the map as context property engine.rootContext()->setContextProperty("mapObj",QVariant::fromValue(map)); //access from QML import MyClass 1.0 console.log(mapObj["myclass"]) console.log(mapObj["myclass"].text()) //text() is a public slot in MyClassAlso make sure MyClassinheritsQObject
- 
@Maxim-DC If you don't need MyKey*in QML then you can useQVariantMapwith custom objects as values. The custom object will need to be registered first usingqmlRegisterType. Also sinceQVariantMapusesQVariantas 2nd parameter you will need to make that custom objectQVariant. To sum up,
 For eg.//register MyClass before using qmlRegisterType<MyClass>("MyClass",1,0,"MyClass"); MyClass *myclass = new MyClass; myclass->setText("MyClass Item"); //some method in MyClass //add it to QVariant QVariant var = QVariant::fromValue(myclass); //add it to QVariantMap QVariantMap map; map.insert("myclass",var); //set the map as context property engine.rootContext()->setContextProperty("mapObj",QVariant::fromValue(map)); //access from QML import MyClass 1.0 console.log(mapObj["myclass"]) console.log(mapObj["myclass"].text()) //text() is a public slot in MyClassAlso make sure MyClassinheritsQObject
- 
@p3c0 Ok i got it but then i have to specify the key in qml, thats not what i want, i want to make a listmodel of the values of the qmap 
- 
@p3c0 For example the qmap consists of 3 objects, <mykey1*, myobject1*> <mykey2*, myobject2*> <mykey3*, myobject3*>i want to show a list with properties, textinitem1: myobject1.somevar, textinitem2: myobject2.somevar, ....
- 
@p3c0 For example the qmap consists of 3 objects, <mykey1*, myobject1*> <mykey2*, myobject2*> <mykey3*, myobject3*>i want to show a list with properties, textinitem1: myobject1.somevar, textinitem2: myobject2.somevar, ....@Maxim-DC If you want to reuse your existing QMapthen it would be better to create a new class based on QAbstractIItemModel. In there you can re-implementdata()to return your data fromQMap.
