[Interest] QML Listview delegate in C++
bo at vikingsoft.eu
Sat Jun 6 08:34:36 CEST 2015
Den 05-06-2015 kl. 23:04 skrev Simone:
> I'm facing a problem in my QML application. The target is an Arrm processor
Ah, the pirate processor :)
> (freescale iMX53) with not so much capabilities.
> My problem is that I have a quite complex listview delegate item, and I observe a cpu usage very high when scrolling my list with lot of items, penalyzing the smoothness of the scrolling.
> I was wondering if I can develop the delegate in C++ (with widgets) instead of pure QML since the creation of QML objects is (of course) slower.
No, you can't use widgets for this. Technically that might not be
entirely accurate, but since we're talking performance, it is.
What you can do instead is to create a new kind of item yourself by
subclassing QQuickItem and using native OpenGL rendering to do this.
There are examples in the Qt dir that shows how to do this. You can also
watch a talk from last years dev days about how to do this.
If you create a single item delegate that performs the entire painting
without creating other objects, you probably can't do better. Now,
wether this actually solves your problem
> Is there such possibility?
> Can I reasonably increase scroll performances?
Yes, that should be possible. I was not sure if the delegate was
instantiated multiple times or reused, but a quick test with this shows
that it's actually created over and over again:
import QtQuick 2.2
property int delegateCount: 0
text: "I am item number: " + index
Component.onCompleted: console.log("Instantiated delegate",
I hope this helps,
Qt and C++ developers for hire
More information about the Interest