我可以得到一些类在Qt的所有实例

Can I get all instances of some class in Qt?

本文关键字:Qt 实例 我可以      更新时间:2023-10-16

我已经用它作为源模型实现了QAbstractItemModelQSortFilterProxyModel。我有一个itemModel实例和几个filterModel实例。在每个filterModel中,我有一些变量值,这些值是根据itemModel的过滤数据计算的。当重新创建itemModel时(删除所有项并插入新项),该变量的值应设置为default(或在过滤完成后重新计算)。

问题是,我没有一些指向filterModel实例的指针列表来迭代它们。当然,我可以在构造函数中创建这样的静态列表。但可能是MOC代替我做的,并将这样的列表保存在这个类的QMetaObject中?

您的过滤器代理实现坏了。代理完全被告知模型的每一个变化——这就是为什么模型是QObject s并发出变化信号!当源模型指示它已经更改时,没有什么可以阻止您适当地更改"某些变量"。

您需要将"某些变量"视为依赖于源模型中的某些数据(和结构!)。每当源模型指示对依赖数据或结构的更改时,代理必须重新计算该值—或者至少设置一个标志,以便在需要时可以延迟重新计算该值。