<div dir="ltr"><div><div>The row index changes few times in comparison to the number of times data is called. Reduce the number of times your code instances a new object by caching the object and creating a new one only when the row index changes.<br></div></div><div><br></div><div>Something like:</div><div><br></div><div>    QVariant data(const QModelIndex &index, int role) override<br>    {<br>        static int lastRow = -1;<br>        static QScopedPoint<MyDataClass> lastObj;<br>        if (lastObj.isNull() || index.row() != lastRow) {<br>            lastRow = index.row();<br>            lastObj.reset(createDataForRow(lastRow);<br>        }<br></div><div><br></div><div>/Stan</div><div></div></div>