QTreeView 或 QTreeWidget

标签 qt design-patterns treeview qtreewidget model-view

我想在我的程序中实现一个带有嵌套子级别的树,我正在寻找这两种( View /小部件)中的哪一种最适合我的目标。

我有一个任务完成/错过/失败的天数列表,每个任务都有完成/错过/失败的次数,最后是当天的分数。

我想像这样显示它们:

tree display

我在 QtCreator 中使用 QTreeWidget 制作了这个示例,但我担心很难修改元素,因为它们存储在其他地方。

我的担忧是否合理,我应该转到模型/ View 结构,还是可以轻松地使用 QTreeWidget?树将记录任务,因此将不断变化。元素只会添加到其中,不会删除。并且天数将从高到低排序(第 2 天是第一个,然后是第 1 天)

最佳答案

如果您的数据存储在数据库模型中,或者如果您想拥有一个数据模型并以不同方式在某些 View 中显示它,那么您绝对最好使用 QTreeView .

但是QTreeWidget以某种方式拥有它的内部模型以及在索引上下文中处理模型的方法。一般来说,如果你只是想要一些简单易用的东西,你可以使用小部件的方式。

但是模型/ View 方法在 IMO 中更加通用和灵活。您可以创建自己的模型和 View 子类,这使您可以做任何想做的事情。

关于QTreeView 或 QTreeWidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27832814/

相关文章:

调用构造函数时 C++/Qt 无法解析外部

c++ - 布局中的 Qt 状态机转换

c++ - 子类化的 QWidget 和鼠标事件

asp.net-mvc - 使用 ASP.NET MVC 和 MVVM 的页面初始化模式(如 knockoutjs)

c# - 如何消除两个类之间的依赖?

python - 为什么 PyGtk 中的 set_model 方法将第一列的值复制到第三列?

c++ - QListview, QTreeview 是正确的以列表方式显示文件

java - 具有行数据网关的注册表模式

javascript - Extjs4 从树存储中保存 file.json

python - ttk TreeView : How to select a row?