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