我对重置或清除与QAbstractItemModel
相关的数据的正确方法感到困惑?。
我正在编写一个应用程序,用户可以使用一组新数据(空或小)“重新开始”。
当用户提出此请求时,我是否应该删除旧模型?或者我应该单独留下模型并删除所有行?
此致 Dan O
答案 0 :(得分:6)
如果用户真正重新开始使用一组新数据,那么我只需删除旧模型并创建一个新模型即可。简单,有效,并且与用户正在做的事情相匹配。
答案 1 :(得分:5)
一般来说,我更愿意让模型对变化作出反应,并采取必要的行动来更新它的观点(间接地)。但是,编程模型可以是(= is)PITA,所以如果我正在查看创建新模型并删除旧模型的代码,我可能会仔细查看。只有在您确定用户只删除所有行时才执行此操作。如果用户可以逐步从模型中删除项目,那么最好在第一时间正确实现删除...
此外,ModelTest可能会帮助您发现Qt模型的问题。
答案 2 :(得分:4)
我不知道哪种方式真正“更好”,但删除所有行可能是一个相当简单的功能,如:
void MyModel::Clear(void)
{
// remove all data from internal data structures
...
// Call QAbstractItemModel::reset to ensure any views know that everything has changed.
reset();
}