我已将QAbstractItemModel
和QSortFilterProxyModel
与其作为源模型实施。我有一个itemModel
个实例和几个filterModel
个实例。在每个filterModel
中,我的某些变量值是根据itemModel
的过滤数据计算得出的。重新创建itemModel
时(删除所有项目并重新插入新项目),此变量的值应设置为默认值(或者在完成过滤后重新计算)。
问题是我没有一些指向filterModel
实例的指针列表来迭代它们。当然,我可以在构造函数中创建这样的静态列表。但是MOC可能代替我而不是在这个类的QMetaObject
内保存了这样的列表吗?
答案 0 :(得分:0)
您的过滤器代理实施已损坏。代理完全了解模型的每一个变化 - 这就是模型为QObject
并发出变化信号的原因!当源模型表明它已经发生变化时,没有什么能阻止你根据需要更改“某个变量”。
您需要将“某个变量”视为依赖于源模型中的某些数据(和结构!)。每当源模型指示依赖数据或结构的更改时,您的代理必须重新计算该值 - 或者至少设置一个标志,以便在需要时可以懒惰地重新计算该值。