我开始使用Qt模型视图系统和QStandardItemModel以及一些视图。但后来我注意到还有一些小部件 - 树,表,列表,它们几乎与视图一样使用。我读过Qt文档 关于它 并且诚实不明白我们还需要什么小部件,为什么观点不够......
我开始使用Qt模型视图系统和QStandardItemModel以及一些视图。但后来我注意到还有一些小部件 - 树,表,列表,它们几乎与视图一样使用。我读过Qt文档 关于它 并且诚实不明白我们还需要什么小部件,为什么观点不够......
你应该知道两件事。
速度数据加载有多重要。看到这个问题 - Qt模型/视图与标准小部件。
是否需要实现比QStandardItemModel更有用的QAbstractItemModel?例如,如果您已经有一个需要存在于视图中的QVector,那么您将很好地使用自己的模型而不是标准模型。
Q * Widgets易于使用,易于使用。它们可能会变得乏味,但是当你必须查找并随后更新项目时。然后,一旦你理解了概念,编写自定义模型通常会更容易。此外,对于大量项目,自定义模型将具有更好的性能。
结合视图的自定义模型更灵活:它们允许使用代理模型,尤其是 QSortFilterProxyModel,这使得基本的排序和过滤非常简单。
如果自定义模型看起来太令人生畏(它们可能变得特别复杂,对于树模型)并且您仍然希望视图和代理的灵活性,我建议调查 QStandardItemModel:它为您提供了基于项目的API,如Q * Widget do,但可以与不同的代理和视图自由组合。如果您在某个时候决定选择自定义模型,只需更换模型,您根本就没有触摸代理和视图。