C++ 清除/重置qt中的模型(删除所有行)

C++ 清除/重置qt中的模型(删除所有行),c++,design-patterns,qt,model-view-controller,C++,Design Patterns,Qt,Model View Controller,我不知道如何正确地重置或清除与qabstractemmodel关联的数据 我正在编写一个应用程序,其中用户可以使用一组新的数据(空的或小的)来“重新开始” 当用户提出此请求时,我是否应该删除旧型号?或者我应该让模型一个人呆着,只删除所有的行吗 问候,, Dan O如果用户真的要用一组新数据重新开始,那么简单地删除旧模型并创建一个新模型对我来说是有意义的。简单、有效,并且与用户正在做的事情相匹配。通常,我更喜欢让模型对更改做出反应,并采取必要的措施来更新其视图(当然是间接的)。然而,编程模型可能是

我不知道如何正确地重置或清除与
qabstractemmodel
关联的数据

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

当用户提出此请求时,我是否应该删除旧型号?或者我应该让模型一个人呆着,只删除所有的行吗

问候,,
Dan O

如果用户真的要用一组新数据重新开始,那么简单地删除旧模型并创建一个新模型对我来说是有意义的。简单、有效,并且与用户正在做的事情相匹配。

通常,我更喜欢让模型对更改做出反应,并采取必要的措施来更新其视图(当然是间接的)。然而,编程模型可能是PITA,因此如果我正在检查创建新模型并删除旧模型的代码,我可能会仔细检查。仅当您确定用户仅会删除所有行时才执行此操作。如果用户可以增量地从模型中删除项,那么最好首先正确地执行删除


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

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

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

    // Call QAbstractItemModel::reset to ensure any views know that everything has changed.
    reset();
}

这是不够的。QT提供了应使用的beginResetModel和endResetModel