16

我开始使用带有 QStandardItemModel 和一些视图的 Qt 模型视图系统。但后来我注意到还有一些小部件——树、表、列表,它们恰好与视图的使用几乎相同。我阅读了关于它的Qt 文档,诚实不明白我们还需要什么小部件,为什么视图还不够......

4

2 回答 2

10

Q*Widgets 易于使用,适用于简单的用例。当您必须在之后查找和更新项目时,它们可能会变得乏味处理。然后,一旦您了解了这个概念,编写自定义模型通常会更容易。还有很多项目,自定义模型将具有更好的性能。

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

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

于 2013-01-25T18:54:53.877 回答
8

你应该知道两件事。

速度数据加载有多重要。请参阅此问题 - Qt 模型/视图与标准小部件

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

于 2013-01-25T18:45:11.090 回答