I am using Qt model/view framework. When I reset the data in the model, I have to reset the model to let views update also. How to do it? I found a signal modelReset(QPrivateSignal);
in the QAbstractItemModel, Is this the way to solve it? How to emit the signal? Thanks.
Asked
Active
Viewed 2.0k times
16

user1899020
- 13,167
- 21
- 79
- 154
-
2Worth to mention that there are other methods that help to update views. All depends on what changes are made. Model reset is useful when you're performing big canges in model. There is `beginInsertRow`, `beginMoveRows`, `beginRemoveRows`. All those methods also apply to columns. So if you're going to perform small changes don't use `beginResetModel` as it will rebuild whole model in view instead of applying small changes on view. – Kamil Klimek Feb 08 '13 at 08:42
2 Answers
19
You call beginResetModel()
before you reset your data, and then endResetModel()
once you have finished. The endResetModel()
emits the private signal.

cmannett85
- 21,725
- 8
- 76
- 119
3
As you can see here, the preferred method is to use the beginResetModel()
and endResetModel()
functions surrounding your reset code in your model subclass.
This should handle emitting the signal appropriately.
Some of the qabstractitemmodel subclasses might allow you to use model.removeRows(0,model.rowCount())
(others would require you to implement it yourself)

jkerian
- 16,497
- 3
- 46
- 59