【发布时间】:2009-09-27 00:46:51
【问题描述】:
我对重置或清除与QAbstractItemModel 关联的数据的正确方法是什么感到困惑?。
我正在编写一个应用程序,用户可以在其中使用一组新数据(空或小)“重新开始”。
当用户提出此请求时,我是否应该删除旧模型?还是我应该不理会模型,只删除所有行?
问候, 丹奥
【问题讨论】:
标签: c++ design-patterns qt model-view-controller
我对重置或清除与QAbstractItemModel 关联的数据的正确方法是什么感到困惑?。
我正在编写一个应用程序,用户可以在其中使用一组新数据(空或小)“重新开始”。
当用户提出此请求时,我是否应该删除旧模型?还是我应该不理会模型,只删除所有行?
问候, 丹奥
【问题讨论】:
标签: c++ design-patterns qt model-view-controller
一般来说,我希望模型对更改做出反应并采取必要的行动来更新它的视图(当然是间接的)。但是,编程模型可以是(=是)PITA,所以如果我正在审查创建新模型并删除旧模型的代码,我可能会仔细研究。仅当您确定用户只会删除所有行时才执行此操作。如果用户可能会逐步从模型中删除项目,那么您最好首先正确实施删除...
另外,ModelTest 可能会帮助您发现 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();
}
【讨论】: