I've been looking at QQmlListModel::sync() (found in
qtdeclarative/src/qml/types/qqmllistmodel.cpp) (looking at v5.11) for
quite some time and haven't been able to figure out how it can work.
I'm still trying to come up with a terse explanation of how I think
the function behaves and a circumstance where it fails to do the
correct thing.

In the mean time, it appears to me that `beginInsertRows()` and
`beginMoveRows()` are called after the underlying model is changed. I
thought that wasn't allowed.

> When reimplementing insertRows() in a subclass, you must call this function 
> before inserting data into the model's underlying data store.
https://doc.qt.io/qt-5/qabstractitemmodel.html#beginInsertRows

I assume the same about `beginMoveRows()` but it's not actually clear
to me. However `endMoveRows()` does say:

> When implementing a subclass, you must call this function after moving data 
> within the model's underlying data store.
https://doc.qt.io/qt-5/qabstractitemmodel.html#endMoveRows

Presumably that doesn't mean "any time before" but specifically
between beginMoveRows and endMoveRows.  And, as I understand it, it
doesn't matter that it's in a subclass except in so far as the
subclass tends to be the caller and has access to the protected
underlying data store.

Am I misunderstanding anything here so far?

Also, are there tests for this? The only test I could find related to
this had to do
with making sure some function was only callable from a QML worker script.
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to