首页 > 其他分享 >TreeView的基本使用,以及和TableView的区别

TreeView的基本使用,以及和TableView的区别

时间:2023-09-13 18:32:44浏览次数:30  
标签:TableView QTreeView QStandardItemModel 区别 QTableView 树形 TreeView 数据 QStandardIte

Qt 中的 QTreeView 是一个用于显示树形数据的强大控件,通常用于显示层次结构数据。以下是使用 QTreeView 的基本步骤:

  • 创建一个 QTreeView 实例
    在你的主窗口或其他窗口部件中创建一个 QTreeView 实例:
QTreeView *treeView = new QTreeView(this);
  • 创建一个数据模型
    QTreeView 需要一个数据模型来显示数据。通常,你会使用 QStandardItemModel 来创建模型并填充数据。
QStandardItemModel *model = new QStandardItemModel;
  • 添加树形数据项
    使用 QStandardItemModel 的 appendRowappendColumn 方法来添加树形数据项。例如:
QStandardItem *rootItem = model->invisibleRootItem(); // 根节点

QStandardItem *item1 = new QStandardItem("Item 1");
QStandardItem *item2 = new QStandardItem("Item 2");
QStandardItem *subItem1 = new QStandardItem("Subitem 1");

rootItem->appendRow(item1);
rootItem->appendRow(item2);
item2->appendRow(subItem1);

这将创建一个根节点,两个顶级项目(Item 1 和 Item 2),以及 Item 2 下的一个子项目(Subitem 1)。

  • 将模型设置给 QTreeView
    使用 setModel 方法将模型设置给 QTreeView:
treeView->setModel(model);

这会将模型和 QTreeView 绑定在一起,以显示模型中的数据。

  • 自定义视图属性(可选)
    你可以自定义 QTreeView 的各种属性,如列标题、排序、编辑模式等,以适应你的需求。例如:
treeView->setHeaderHidden(true); // 隐藏列标题
treeView->setSortingEnabled(true); // 启用排序
treeView->setEditTriggers(QAbstractItemView::DoubleClick
  • 和TableView的区别:

QTreeViewQTableView 是 Qt 中用于显示数据的两个不同的视图部件,QTreeView 用于显示树形结构数据,而 QTableView 用于显示平面表格数据。具体有以下主要区别:

  1. 数据显示方式
  • QTreeView:用于显示具有层次结构的数据,通常用于显示树形数据,其中每个项可以包含子项。
  • QTableView:用于显示平面表格数据,通常用于显示二维表格,其中每个单元格可以包含文本或其他数据。
  1. 数据结构
  • QTreeView:适用于树形数据结构,通常具有一个根节点,根节点下可以包含多个子节点,每个子节点也可以包含子节点,以此类推。
  • QTableView:适用于平面的二维表格数据,通常由行和列组成,每个单元格可以包含一个数据项。
  1. 显示方式
  • QTreeView:以树形结构的方式显示数据,通常使用树状箭头来表示子项的展开和折叠状态。
  • QTableView:以表格的形式显示数据,通常包括行和列的分隔线。
  1. 用途
  • QTreeView:适用于展示层次化数据,例如文件系统、组织结构、目录树等。
  • QTableView:适用于展示表格数据,例如数据库查询结果、电子表格、数据报表等。
  1. 编辑能力
  • QTreeView:通常用于只读或有限编辑的情况,虽然可以自定义以支持编辑,但通常不是其主要用途。
  • QTableView:设计用于支持丰富的数据编辑,每个单元格可以轻松编辑和更新。
  1. 模型的不同
  • QTreeView 通常使用 QAbstractItemModel 的子类,如 QStandardItemModel 或自定义模型来管理树形数据。
  • QTableView 通常使用 QAbstractTableModelQAbstractListModel 的子类,如 QStandardItemModel 或自定义模型来管理表格数据。

标签:TableView,QTreeView,QStandardItemModel,区别,QTableView,树形,TreeView,数据,QStandardIte
From: https://blog.51cto.com/u_16246024/7463173

相关文章

  • ==和equals的区别
     ==:既可以判断基本类型,又可以判断引用类型。==:如果判断基本类型,判断的是值是否相等。==:如果判断的是引用类型,判断的是地址是否相等,即判断是不是同一对象。equals:是object类中的方法,只能判断引用类型。默认判断的是地址是否相等,子类中往往重写该方法,用于判断内容是否相等。(具体可查......
  • Java基础——==和equals的区别
     ==:既可以判断基本类型,又可以判断引用类型。==:如果判断基本类型,判断的是值是否相等。==:如果判断的是引用类型,判断的是地址是否相等,即判断是不是同一对象。equals:是object类中的方法,只能判断引用类型。默认判断的是地址是否相等,子类中往往重写该方法,用于判断内容是否相等。(具体可查......
  • 阿里云轻量应用服务器和ECS有什么区别?
    阿里云服务器ECS和轻量应用服务器有什么区别?云服务器ECS是明星级云服务器,轻量应用服务器可以理解为简化版的云服务器ECS,轻量适用于单机应用,云服务器ECS适用于集群类高可用高容灾应用,阿里云百科来详细说下阿里云轻量应用服务器和云服务器的区别,包括运维区别、镜像系统、使用场景、网......
  • java安全架构____对称加密和非对称加密区别(对称秘钥,非对称秘钥)
    (一)对称加密(SymmetricCryptography)对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secretkey),这种方法在密码学中叫做对称加密算法。对称加密通常使用的是相对较小的密钥,一般小于256bit。因为密钥越大,加密越强.例如AES,DES(二)......
  • 正向代理和反向代理的区别
    一.正向代理帮助内网访问外网用的#从内到外.客户端A访问不到服务端F需要做一个代理服务器D来访问F应用场景 1.一个公司局域网的人都有公司内网192.178.xx.xx和192.188.xxx.xxx不同部门或不同ip段想要访问外网如百度就需链接一个可以访问外网的机器做代理去访问百度获取数......
  • String、StringBuffer和StringBuilder的区别,ArrayList和linkedList的区别,HashMap和Has
    一、String、StringBuffer和StringBuilder的区别1.1相关介绍String是只读字符串,并不是基本数据类型,而是一个对象。从底层源码来看是一个final修饰的字符数组,所引用的字符串不能改变,一经定义无法再增删改。每次对String操作都会生成新的String对象。所以对于经常改变内容的字符串最......
  • Vue.set和splice方法有什么区别?
    Vue.set方法和splice方法在Vue中用于修改数组的行为有一些区别。一:Vue.set(obj,key,value):用途:Vue.set是Vue提供的全局方法,用于向响应式对象中添加新的响应式属性,并确保这个新属性是响应式的。参数:obj:要修改的目标对象。key:要添加的属性键名。value:要添加的属性值。示......
  • git fetch、git pull区别
    参考:https://blog.csdn.net/weixin_42343307/article/details/121239170gitfetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。gitpull是将远程主机的最新内容拉下来后直接合并,即:gitpull=gitfetch+gitmerge,这样可能会产生冲突,需要......
  • linux shell 字符串变量 有双引号和无双引号的区别
     001、[root@pc1test02]#lsa.shb.sh[root@pc1test02]#cata.sh##测试程序1#!/bin/bashstr1="ab_cd_ef"tmp1=$(echo$str1|sed's/_/\n/g')echo$tmp1[root@pc1test02]#catb.sh##测试程序2#!/bin/bashstr1="ab_......
  • Fetch和ajax之间的区别
    Fetch和ajax之间的区别fetchFetchAPI是基于Promise设计的Fetch内置了对JSON数据的解析支持,我们只需要调用response.json()方法,可以直接获得返回的JSON数据。语法简洁,更加语义化原生支持率不高,可以用polyfill兼容IE8+浏览器ajax是理用XMLHttpRequest对象来请求数据的,而fetc......