在qt中清除/重置模型(删除所有行)

时间:2009-09-27 00:46:51

标签: c++ design-patterns qt model-view-controller

我对重置或清除与QAbstractItemModel相关的数据的正确方法感到困惑?

我正在编写一个应用程序,用户可以使用一组新数据(空或小)“重新开始”。

当用户提出此请求时,我是否应该删除旧模型?或者我应该单独留下模型并删除所有行?

此致 Dan O

3 个答案:

答案 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();
}