Hi, issue is solved. I forgot to set a parent for C++ object. QML was able to take ownership of the object.
http://doc.qt.io/qt-5/qtqml-cppintegration-data.html Changing object creation to *TestObject *testObject = new TestObject(&myObjectListModel);* solves the problem with the crashes. Git repository is also updated. Best Regards, railwaycoder 2015-02-03 6:55 GMT+01:00 Railway Coder <railwayco...@gmail.com>: > Hi, > > I'm currently writing an application using Qt5 (C++ and QML). > It will get a big data backend in C++ which will get updated by different > hardware in realtime. > > To get this data displayed in QtQuick. I found the QObjectListModel > approach which was presented on QtDD12: > http://qt-project.org/videos/watch/qml-for-desktop-apps > > I've updated the QObjectListModel implementation to work with Qt5. > > The application I've written sometimes crashes. It seems that this has to > to with the QObjectListModel approach. > > I've put together a simple example to show this issue. > A simple git import from QtCreator should make it very simple for you to > test my > example application. > > Clone URL: > https://railwayco...@bitbucket.org/railwaycoder/qobjectlistmodelqmltesting.git > > QObjectListModel is created in C++ and filled with 200 TestOBjects. > The OBjectListModel is than exposed to QML using > rootContext->setContextProperty(...) > In Qml there is a simple ListView filled with data from the > QObjectListModel childs. > At this point there are no problems. > > But I want to do some actions with the TestObject selected in the ListView. > Therefore I added the following code: > > onCurrentIndexChanged: { > console.log(currentIndex) > console.log(ObjectListModel.get(currentIndex)) > } > > First testing looks also okay. But if you do fast scrolling up and down > using > keyboard or sometimes by simply selecting an item by mouse, the > application crashes with following error: > > qml: TestObject(0x12e1820) > qml: 51 > qml: TestObject(0x12e1610) > qrc:/main.qml:35: TypeError: Cannot reat property 'name' of null > qml: 50 > The program has unexpectedly finished. > > My idea about this issue is, that this has something to do with the > seperate QtQuick rendering thread in Qt5. > ListView sometimes needs to update it's data from the model and it seems > if in the same moment ObjectListModel.get(currentIndex) is called this > issue happens. > > Maybe I am completly wrong and there is a simple mistake in my code? > Otherwise is this a bug? Or is it my task to take care of the QML > rendering thread? > Is QOBjectListModel approach best practise for accessing big data which is > asynchronylsy updated by C++? > > Best Regards, > railwaycoder >
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest