我刚刚阅读了 Qt 4.8 的模型/视图文档。我相信了解模型/视图(代表/选择模型)是如何工作的。我不确定的一件事是当我有一个例如 TreeView 时如何操作数据。
想象一下,当一个项目/行被选中时,有一个 TreeView 来显示一个列表和一个按钮来从这个列表中删除元素。我在这里看到两种方法
1) 在 PushButton 的插槽中,我检索 TreeView 的 SelectionModel 和 ItemModel 并调用 model->removeRow(index.row ...)。通过这种方式,模型(我从 QAbstractItemModel 子类化)操纵它应该表示的数据。
2) 在 PushButton 的插槽中,我直接从数据源中删除了 TreeView 模型所代表的项目。然后我可以通过信号/槽将数据与模型链接起来,这样模型就可以告诉 TreeView 底层数据已经改变。
可以通过添加元素来想象相同的场景。我应该将新元素添加到数据中,将其更改状态信号通知给 TreeView 的 ItemModel,还是应该通过 ItemMode 添加新项目?
我还没有找到任何关于此的最佳实践文档。这两种方法有很大的不同,所以我想提前知道哪一种更可取。
有人建议走哪条路吗?
谢谢