Hi, my application makes heavy use of QAIM::reset() in its proxy models, most notably in situations where the parent model either "goes away" or otherwise fails in a manner which cannot be accommodated by the beginResetModel/endResetModel pair of functions. I could convert some of these into proper pairs, but others (like the parent model being destroyed) have no choice but to signal the "sorry, everything is gone" situation and carry on.
I have always assumed that the users of the model are more or less free to call a "reasonable" subset of model's functions form inside slots attached to modelAboutToBeReset() -- like index(), parent() and data(). My models are probably buggy in this regard (they use lazy loading which means that they should probably explicitly check for a reset being in progress and disable any dynamic updates from this context -- some of them do, others don't). I've always used reset() in my code to indicate that this is a place where the code is doing either something suspicious, or where it does not have any other way but emit this signal. I have also believed that calling reset() is "safe" in that it is somehow different than emitting modelAboutToBeReset/modelReset. In Qt4, the implementation of QAIM::reset() is in the .cpp file which I haven't seen until now. It just emits these signals and invalidates the persistent indexes. In Qt5, it's different -- the code actually does nothing but calling the beginResetModel()/endResetModel() pair, so it is as "safe" as doing that by hand. What shall my Qt5 code do when a proxy model discovers that the source model is no longer there? Some of my proxies build internal data structures which contain pointers to data in the source model; at the time the source model gets missing, I really shouldn't be accessing these anymore. With kind regards, Jan -- Trojita, a fast e-mail client -- http://trojita.flaska.net/ _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest