QTreeWidgetItem添加自定义数据

本文简要介绍一个知识点,如题所示,就是如何给QTreeWidgetItem添加自定义数据。两种方法:

方法一

数据可以是任意类型(Variant类型),如果不是基本数据类型的数据,则需要定义一个结构体表示数据类型。这里这样定义:

struct User:public QObjectUserData
{QString imgpath;int itemtype;
};
Q_DECLARE_METATYPE(User)QTreeWidget *tree = new QTreeWidget;
tree->setColumnCount(1);
tree->setHeaderLabel("标题");QTreeWidgetItem *item = new QTreeWidgetItem(0);
item->setText(0,"hello world!");
User mydata;
mydata.imgpath = ":/new/picture/images/pc.png";
mydata.itemtype = 1;//写入数据
item->setData(0,Qt::UserRole+1,QVariant::fromValue(mydata));//读取数据
User data = item->data(0,Qt::UserRole+1).value<User>();
qDebug() << data.imgpath << data.itemtype;

方法二

  1. 继承QTreeWidgetItem,写一个类把信息(自定义数据)存放在里面,假设该类为MyQTreeItem。
    创建一个该类的对象:myQTreeItem和new 一个QTreeWidgetItem对象sysQTreeItem,然后执行tree->setItemWidget(sysQTreeItem ,0,(QWidget*)myQTreeItem); 0表示第1栏。

  2. 当树的节点被点击后,获取树的当前QTreeWidgetItem(假设这里是m_pCurrentItem),然后
    MyQTreeItem* myItem = (MyQTreeItem*)tree->itemWidget(m_pCurrentItem,0);获取到myItem后即可读取数据了。
    qDebug() << myItem->m_sImgPath << myItem->m_iItemType;

class MyQTreeItem:public QTreeWidgetItem
{Q_OBJECTpublic:MyQTreeItem(QWidget *parent = 0);public:QString m_sImgPath;int m_iItemType;
}//前期关联数据
MyQTreeItem* myQTreeItem;
myQTreeItem->m_sImgPath = ":/new/picture/images/pc.png";
myQTreeItem->m_iItemType = 1;QTreeWidgetItem* sysQTreeItem = new QTreeWidgetItem(0);QTreeWidget* tree = new QTreeWidget();
tree->setItemWidget(sysQTreeItem ,0,(QWidget*)myQTreeItem);//后期读取数据
MyQTreeItem* myItem = (MyQTreeItem*)tree->itemWidget(m_pCurrentItem,0);
qDebug() << myItem->m_sImgPath << myItem->m_iItemType;


作者公众号:IT平头哥。分享工作中遇到的问题,开卷有益,欢迎来撩~

QTreeWidgetItem添加自定义数据相关推荐

  1. Discuz! X2.5 添加自定义数据调用模块(简单方法)

    转:http://521-wf.com/archives/46.html Discuz! X2.5 添加自定义数据调用模块(简单方法) Discuz!X系列的diy功能还是相当不错的,在对其进行二次开 ...

  2. YOLOv5添加自定义数据增广方法

    YOLOv5添加自定义数据增广方法 虽然YOLOv5内置数据增广方法非常丰富,包括随机旋转.翻转.HSV-Saturation等.但仍然有添加自定义的数据增广方法的情况.例如使用N+L策略训练网络.N ...

  3. Discuz! X2.5 添加自定义数据调用模块

    大致可以分为以下三个步骤: 一.添加数据调用程序 二.后台更新diy模块分类缓存 三.添加相应的数据模板 具体操作如下: 一.添加数据调用程序 1> 在  source/class/block/ ...

  4. android 共享数据,android进程间共享简单数据

    我们知道,在android中,保存简单的数据最方便的就是使用SharedPreferences,然而,SharedPreferences虽然说也可以设置成进程间共享数据,但是并不可靠(更致命的是,不同 ...

  5. 在Vue里使用G2地图制作省级地图展示各市级数据

    制作效果 一.相关依赖 1.npm安装G2 npm install @antv/g2 --save 2.npm安装data-set npm install @antv/data-set --save ...

  6. 小米手环3 NFC 自定义 门禁卡数据

    摸索了好久,最后还是从网络安全下手,篡改数据包. 最终的效果,点击添加小米空白卡便可生成一张自定义数据的门禁卡.[最终测试,可以突破2张限制,最多添加5张门禁卡] 思路: 因为门卡模拟的通道必须要读取 ...

  7. 7款适用于任何数据灾难的恢复工具

    摘要:从找回误删的照片,到恢复RAID阵列,本文中所介绍的这些工具可以大大帮助您进行数据的恢复.现如今的存储介质的确是比以往更可靠了.但是,尽管驱动设备方面的故障越来越少,但在造成您的数据丢失的头号原 ...

  8. ObjectArx 使用COM接口添加CAD特性表自定义数据

    问题: 现在想在CAD的特性表上添加自定义数据,用来显示数据和修改数据. 思路: 通过ObjectArx提供的工作手册,找到了 SheetSet 的说明(如图),但是没有找到示例. 不过也可以了解到是 ...

  9. 向SqlSession中添加自定义数据源

    作者:禅与计算机程序设计艺术 1.简介 在 Spring 中,SqlSession 的作用就是用来执行 SQL 命令,但在实际开发过程中,经常会遇到需要往查询出来的结果中添加一些额外的数据.或者需要将 ...

  10. Qt 快速入门学习笔记

    Qt 快速入门学习笔记 环境安装 环境配置以及安装 安装包下载地址 1.windows安装 msvc编译器模块需要安装Windows软件开发工具包. MinGW是Windows平台使用GNU工具导入库 ...

最新文章

  1. 实现 Java 多线程并发控制框架
  2. iOS开发-项目的完整重命名方法,图文教程。
  3. 用宏定义实现函数值互换
  4. [云炬ThinkPython阅读笔记]1.6 形式语言和自然语言
  5. 真!长!啊!中国校名最长的学校竟然有55个字!
  6. 如何在没有配备U1芯片的iPhone上使用AIrTag?
  7. java开源内容发布系统_18个Java开源CMS系统一览
  8. Windows图片查看器不出现下一张和上一张按钮
  9. MATLAB实现短时傅里叶变换
  10. deviceOrientation简介
  11. fixed在ios失效解决方案
  12. PCA主成分分析(降维)
  13. 易经三原则:变易、简易、不易[转]
  14. 12864液晶深入学习笔记_1——基于msp430g2553
  15. pika.exceptions.ConnectionClosed 问题的解决
  16. 清览云题库--软件工程 ---第9章结构化实现及软件维护练习
  17. 2023 上半年软件设计师知识点复习总纲
  18. javascript的一点点学习记录
  19. [已解决]Object c,报错Expected method body
  20. SpringBoot + 阿里云 OSS 实现在线视频播放

热门文章

  1. Aristocracy, Democracy, and System Design 读书笔记
  2. localstorage,sessionstorage,cookie
  3. 新体育杂志新体育杂志社新体育杂志社新体育编辑部2022年第8期目录
  4. [系统安全] 二十五.WannaCry勒索病毒分析 (1)Python复现永恒之蓝漏洞实现勒索加密
  5. netbeans java中文_netbeans中文乱码解决方案
  6. FTP成功连接服务器后,出现乱码问题
  7. plsql能连mysql吗_明星就连拍结婚证件照,也能玩儿出花吗?
  8. python中的snip用法_--snip--总是报错,找了好久不知道问题出在哪,望大佬求解(python-pygame)...
  9. Python 面向对象 老虎和羊问题详解
  10. 黑龙江伊春现受伤雄性东北虎 目前已被成功救治