Qt - 什么是首选使用 - 小部件或视图? (树,表,列表)

时间:2013-01-25 17:11:21

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

我开始使用Qt模型视图系统和QStandardItemModel以及一些视图。但后来我注意到还有一些小部件 - 树,表,列表,它们几乎与视图一样使用。我读过Qt docs about it并且诚实不明白我们还需要什么小部件,为什么观点不够......

2 个答案:

答案 0 :(得分:9)

Q * Widgets易于使用,易于使用。它们可能会变得乏味,但在您必须查找并随后更新项目时进行处理。然后,一旦你理解了概念,编写自定义模型通常会更容易。此外,对于大量项目,自定义模型将具有更好的性能。

结合视图的自定义模型更灵活:它们允许使用代理模型,尤其是QSortFilterProxyModel,这使得基本排序和过滤非常简单。

如果自定义模型看起来太令人生畏(它们可能变得特别复杂,对于树模型而言)并且您仍然需要视图和代理的灵活性,我建议调查QStandardItemModel:它为您提供基于项目的API,如Q * Widget可以,但可以与不同的代理和视图自由组合。如果您在某个时候决定选择自定义模型,只需更换模型,您就根本没有触摸代理和视图。

答案 1 :(得分:6)

你应该知道两件事。

速度数据加载有多重要。请参阅此问题 - Qt model/view vs standard widget

是否需要实现比QStandardItemModel更有用的QAbstractItemModel?例如,如果您已经有一个需要存在于视图中的QVector,那么您将很好地使用自己的模型而非标准。