【发布时间】:2021-12-03 16:13:30
【问题描述】:
给定一个QSortFilterProxyModel 和一个QAbstractTableModel,并将代理设置为表模型,并且该代理在QTableView 中使用,我将如何
- 清除实际数据
- 更新视图以显示数据的变化
伪代码:
class MyTableModel(QAbstractTabelModel):
def __init__(self, parent=None):
QAbstractTabelModel.__init__(self, parent)
self.entries = [ <data entries here> ]
@Slot()
def slot_clear_entries(self):
self.entries.clear()
# Trigger refresh of model and notify all connected views
pass
# data(), headerData() etc.
# ...
class MyProxyModel(QSortFilterProxyModel):
def __init__(self, parent=None):
QSortFilterProxyModel.__init__(self, parent)
class MyTableView(QTableView):
def __init__(self, parent=None)
QTableView.__init__(self, parent)
self.model = MyTableModel()
self.proxy = MyProxyModel()
self.proxy.setSourceModel(self.model)
self.setModel(self.proxy)
我在上面使用 PySide,但对 PyQt 或纯 Qt C++ 解决方案没有任何问题。我可以替换模型,但我也在考虑模型还与文件或数据库交互的情况,因此我想处理清理可能涉及额外步骤的情况。
【问题讨论】: