Я реализовал QAbstractItemModel
а также QSortFilterProxyModel
с ним в качестве исходной модели. у меня есть такой itemModel
экземпляр и несколько filterModel
экземпляров. В каждом filterModel
У меня есть переменная, значение которой рассчитывается на основе отфильтрованных данных из itemModel
, когда itemModel
воссоздан (все элементы удалены, а новые вставлены обратно) значение этой переменной должно быть установлено в значение по умолчанию (или просто пересчитано после выполнения фильтрации).
Проблема в том, что у меня нет списка указателей на filterModel
экземпляры для повторения по ним. Конечно, я могу создать такой статический список в конструкторе. Но, вероятно, MOC сделал это вместо меня и сохранил такой список внутри QMetaObject
этого класса?
Ваша реализация прокси фильтра не работает. Прокси-серверы полностью проинформированы о каждом изменении модели — вот почему модели QObject
и излучать сигналы изменения! Ничто не мешает вам изменить «некоторую переменную» соответствующим образом, когда исходная модель показывает, что она изменилась.
Вы должны думать о своей «некоторой переменной» как о зависимости от некоторых данных (и структуры!) Из исходной модели. Каждый раз, когда исходная модель указывает на изменения в зависимых данных или структуре, ваш прокси-сервер должен пересчитать значение или, по крайней мере, установить флаг, чтобы при необходимости значение могло быть вычислено заново.