`

QTreeView的模型的写法注意事项

    博客分类:
  • Qt
 
阅读更多
(本文系原创,转载请声明来自于:http://johnsmith9th.iteye.com)
1. 写一个树型数据结构
2. 从QAbstractItemModel派生一个类,这个类包含或引用上述树形数据结构。
3. 至少实现 index, parent, data, rowCount和columnCount这5个纯虚函数。index和parent函数其实就是从树形数据结构转换出合适的QModelIndex回答给Qt的框架,QModelIndex含有一个指针,可以指向树形数据结构的节点。
4. 根节点,也就是树上看不见的那个节点,必须对应一个非法的QModelIndex,所以你的树形数据结构的根节点从来不会有一个QModelIndex的internalPointer指向它,也永远不要用createIndex来包含你的树形数据结构的根节点,记住,和你的树形数据结构的根节点对应的QModelIndex是一个非法的QModelIndex。
5.index函数的含义就是给你一个父QModelIndex,请你回答一下这个父亲的第row个孩子的QModelIndex,当然这个QModelIndex要指向正确的第row个孩子,这里的row是本级的概念,不是全局的概念,传入的row不会超过父ModelIndex的孩子个数。所以这个函数的签名应该改成GetChildModelIndexAccordingToParentModelIndexBySpecifiedRowAndColumn().当然这个签名有点长,所以没有被采纳。
6.parent函数的含义就是给你一个孩子的ModelIndex,请你回答出它的父亲的ModelIndex.当然,由于ModelIndex携带行列信息,所以,为了得知父亲ModelIndex的行值,往往需要得到祖父,然后判断父亲属于祖父的哪个孩子。这个函数必须保证第4条得以遵循。
7.rowCount回答某个父ModelIndex包含了多少个孩子。
8.data函数需要加以重视,简单的情况下你只需要关心DisplayRole,根据传入ModelIndex的列值,取出你的树形数据结构里的节点的文本返回则可;而对于你不懂或不关心的角色一定要返回QVaraint(),否则你会发现什么都显示不出来。
9.最后把你的树形结构构建好,让QAbstractItemModel的派生类能够引用到它,并且将该model的实例用QTreeView的setModel方法设入就好了。
分享到:
评论

相关推荐

    QTreeView树形视图使用自定义模型model

    本教程将深入讲解如何在`QTreeView`中使用自定义模型,以满足特定的数据展示和操作需求。 首先,`QTreeView`依赖于`QAbstractItemModel`或其子类来获取和管理数据。`QAbstractItemModel`是Qt提供的一种抽象接口,它...

    QTreeView 使用自定义Model

    数据由Model提供,Model是Qt的模型-视图-控制器(MVC)架构中的核心组件,负责存储和管理数据。因此,自定义Model可以让我们根据需求定制数据的结构和操作。 1. **创建自定义Model** - 派生自QAbstractItemModel:...

    自定义QTreeView(详解)

    在本篇文章中,我们将深入探讨如何利用QTreeView来构建高效且可定制化的用户界面,特别是关注模型/视图架构、自定义委托、自定义样式以及实现无边框界面的拖放功能。 首先,理解**模型/视图架构**至关重要。在Qt中...

    QTreeview实现搜索功能查找功能

    QTreeview是基于模型视图架构的,这意味着数据存储在模型(如QStandardItemModel或QFileSystemModel)中,而QTreeview只是一个用来展示这些数据的视图。因此,我们的搜索功能实际上是在模型上进行操作,然后更新视图...

    QTreeView详解

    QTreeView是Qt库中的一个重要组件,它用于展示数据模型的树形结构。在Qt的图形用户界面(GUI)编程中,QTreeView常被用来构建可交互的目录浏览、文件系统查看器或者层级关系的显示。这个组件允许用户通过拖动、折叠/...

    QTreeView展开指定位置节点

    `QAbstractItemModel`是Qt模型视图体系中的抽象基类,负责存储和管理数据,而`QTreeView`则负责展示这些数据。当你想要展开或折叠某个节点时,通常需要与`QAbstractItemModel`交互。 要展开指定位置的节点,你需要...

    自绘QTreeView,添加QPushbutton,并用样式设置按钮,进行美化

    在Qt框架中,QTreeView是一种用于显示模型数据的视图组件,它通常用来展示复杂的层次结构数据,如文件系统、数据库记录等。本教程将详细讲解如何自定义QTreeView,添加QPushButton并进行美化。 首先,自绘QTreeView...

    QTreeView应用

    在Qt库中,QTreeView是模型视图框架的一部分,它用于显示树状数据结构,例如文件系统、组织结构等。QTableView则用于显示表格数据,适用于数据库或表格型数据的操作。代理(QItemDelegate)是Qt中的一个重要概念,...

    QTreeView用法详解

    在Qt的模型-视图框架中,`QTreeView`作为视图(View)部分,可以与各种模型(Model)配合,如`QStandardItemModel`、`QFileSystemModel`或自定义模型,来显示和操作数据。 **一、QTreeView的基本使用** 1. **创建...

    QTreeView实现节点拖动.zip

    在Qt框架中,`QTreeView`是一个非常重要的组件,它用于显示由模型(如`QAbstractItemModel`)提供的树型结构数据。本示例"QTreeView实现节点拖动.zip"着重展示了如何扩展`QTreeView`的功能,使其支持节点的拖放操作...

    QTreeView与QStandardItemModel的使用

    在Qt框架中,QTreeView和QStandardItemModel是用于构建数据视图的重要组件,它们是模型-视图-控制器(MVC)设计模式的一部分。在这个环境中,QTreeView是视图组件,而QStandardItemModel是模型组件,负责存储和管理...

    QTreeView实现树节点之间拖拽.zip

    在Qt框架中,`QTreeView`是一个非常重要的组件,它用于显示基于模型的数据结构,通常以树状的形式呈现。在实际应用中,我们可能需要实现更丰富的交互功能,比如节点之间的拖放操作。本示例"QTreeView实现树节点之间...

    Qt QTreeView使用-QStandardItemModel的使用

    对于大数据量的模型,应该注意性能优化,例如延迟加载或分页加载,避免一次性加载所有数据导致性能下降。 在QtWeight项目中,你可以找到上述功能的具体实现。通过阅读代码,可以更深入理解QTreeView与...

    QTreeView拖放

    在Qt库中,`QTreeView`是一个非常重要的组件,它用于显示和操作基于模型的数据结构。这个组件允许用户以树状视图的方式查看数据,通常用于文件系统、组织结构或其他层次化信息的展示。在本资源中,我们将深入探讨...

    QTreeView控件实现节点的增删改并保存入库

    首先,QTreeView控件是Qt的模型/视图架构的一部分,它依赖于QAbstractItemModel来提供数据。QAbstractItemModel提供了数据的存储和管理,而QTreeView则负责展示这些数据。在这个小工具中,开发者可能自定义了一个...

    Qt QTreeView 简单易学的例子

    模型-视图-控制器(MVC)设计模式在Qt中被广泛应用,QTreeView作为视图,负责显示模型中的数据。 要创建一个基本的QTreeView,你需要以下步骤: 1. **创建模型**:首先,你需要创建一个模型来存储数据。通常,你...

    QTreeView简单例子

    `QTreeView`是基于`QAbstractItemView`的,这意味着它可以使用各种类型的模型,如`QStandardItemModel`或自定义的数据模型。在`Qt Creator`中,我们可以轻松创建和运行`QTreeView`的示例,以便直观地了解其功能和...

    QTreeView+自定义Model实现示例

    `QTreeView`通常与`QAbstractItemModel`或其子类(如`QStandardItemModel`)一起使用,通过模型-视图-控制器(MVC)模式来处理数据。然而,对于大数据量的场景,使用Qt自带的模型可能性能不足,这时我们需要自定义`...

    Qt例程源代码QTreeView.7z

    QTreeView是Qt Widgets模块的一部分,它通常与QAbstractItemModel或QStandardItemModel一起使用,可以展示表格或树状数据模型。这个组件允许用户通过层次结构查看和交互数据,比如文件系统、组织结构或自定义数据...

    实现Qtreeview 重写model 实现model中添加按钮的功能

    在Qt框架中,`QTreeView`是一个非常重要的组件,它用于显示和操作数据模型的层次结构。本教程将深入探讨如何实现一个自定义的`QTreeView`,通过重写`QAbstractItemModel`来添加按钮功能,使得每个树节点都可以关联一...

Global site tag (gtag.js) - Google Analytics