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

Dan*_*n O 11 c++ model-view-controller qt design-patterns

我很困惑重置或清除数据的正确方法是QAbstractItemModel什么?.

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

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

此致,Dan O.

Cal*_*itt 6

如果用户真正重新开始使用一组新数据,那么我只需删除旧模型并创建一个新模型即可.简单,有效,并且与用户正在做的事情相匹配.


lar*_*moa 6

通常,我希望模型对更改做出反应并采取必要的操作来更新其视图(当然是间接的)。但是,编程模型可以是(=是)PITA,因此如果我查看创建新模型并删除旧模型的代码,我可能会指望一下。仅当您确定用户只会删除所有行时才这样做。如果用户可以从模型中逐步删除项目,则最好首先正确实施删除操作。

此外,ModelTest可能会帮助您发现Qt模型的问题。


The*_*ish 5

我不知道哪种方式真正“更好”,但是删除所有行可能是一个相当简单的功能,例如:

void MyModel::Clear(void)
{
    // remove all data from internal data structures
    ...

    // Call QAbstractItemModel::reset to ensure any views know that everything has changed.
    reset();
}
Run Code Online (Sandbox Code Playgroud)

  • 这还不够。QT提供应使用的beginResetModel和endResetModel (8认同)