【发布时间】:2015-07-01 16:57:02
【问题描述】:
我正在使用自定义QSortFilterProxyModel 通过覆盖filterAcceptsRow() 来实现QTableView 的自定义过滤。当我更改过滤条件以及将filterAcceptsRow() 应用于整个表后,如何通知我的应用程序?
基本上,我想在应用过滤后获取可见项的列表,目前我通过在模型中实现的自定义函数计算此列表,该函数迭代行并获取可见行的列表。这是低效的,因为如果两次调用此函数之间没有发生过滤操作,将产生相同的结果。
【问题讨论】:
-
Qt MVC 并非设计用于处理可见项目的范围。模型不应该对视图一无所知。因为您可以将一个模型用于多个视图。
-
我只需要过滤处理完成时的通知。
-
没有这样的通知。因为排序是“即时”进行的。当您添加新项目时 - 会自动应用排序。
-
@SaZ。如果这是真的,视图如何知道模型更改后何时更新自己?
-
有足够多的文档化方法,模型将如何通知视图有关更改。请阅读 qt 文档:doc.qt.io/qt-5/qabstractitemmodel.html(信号部分)
标签: python-3.x qt pyqt qtableview qsortfilterproxymodel