问题 Qt - 什么是首选使用 - 小部件或视图? (树,表,列表)[关闭]


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


1150
2018-01-25 17:11


起源

如果您对小部件功能感到满意 - 请使用小部件。如果您想要更多地控制数据 - 请使用您自己模型的视图。 - fasked


答案:


你应该知道两件事。

速度数据加载有多重要。看到这个问题 - Qt模型/视图与标准小部件

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


6
2018-01-25 18:45





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

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

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


9
2018-01-25 18:54