QTreeWidgetItem添加自定义数据
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;
方法二
继承QTreeWidgetItem,写一个类把信息(自定义数据)存放在里面,假设该类为MyQTreeItem。
创建一个该类的对象:myQTreeItem和new 一个QTreeWidgetItem对象sysQTreeItem,然后执行tree->setItemWidget(sysQTreeItem ,0,(QWidget*)myQTreeItem); 0表示第1栏。当树的节点被点击后,获取树的当前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添加自定义数据相关推荐
- Discuz! X2.5 添加自定义数据调用模块(简单方法)
转:http://521-wf.com/archives/46.html Discuz! X2.5 添加自定义数据调用模块(简单方法) Discuz!X系列的diy功能还是相当不错的,在对其进行二次开 ...
- YOLOv5添加自定义数据增广方法
YOLOv5添加自定义数据增广方法 虽然YOLOv5内置数据增广方法非常丰富,包括随机旋转.翻转.HSV-Saturation等.但仍然有添加自定义的数据增广方法的情况.例如使用N+L策略训练网络.N ...
- Discuz! X2.5 添加自定义数据调用模块
大致可以分为以下三个步骤: 一.添加数据调用程序 二.后台更新diy模块分类缓存 三.添加相应的数据模板 具体操作如下: 一.添加数据调用程序 1> 在 source/class/block/ ...
- android 共享数据,android进程间共享简单数据
我们知道,在android中,保存简单的数据最方便的就是使用SharedPreferences,然而,SharedPreferences虽然说也可以设置成进程间共享数据,但是并不可靠(更致命的是,不同 ...
- 在Vue里使用G2地图制作省级地图展示各市级数据
制作效果 一.相关依赖 1.npm安装G2 npm install @antv/g2 --save 2.npm安装data-set npm install @antv/data-set --save ...
- 小米手环3 NFC 自定义 门禁卡数据
摸索了好久,最后还是从网络安全下手,篡改数据包. 最终的效果,点击添加小米空白卡便可生成一张自定义数据的门禁卡.[最终测试,可以突破2张限制,最多添加5张门禁卡] 思路: 因为门卡模拟的通道必须要读取 ...
- 7款适用于任何数据灾难的恢复工具
摘要:从找回误删的照片,到恢复RAID阵列,本文中所介绍的这些工具可以大大帮助您进行数据的恢复.现如今的存储介质的确是比以往更可靠了.但是,尽管驱动设备方面的故障越来越少,但在造成您的数据丢失的头号原 ...
- ObjectArx 使用COM接口添加CAD特性表自定义数据
问题: 现在想在CAD的特性表上添加自定义数据,用来显示数据和修改数据. 思路: 通过ObjectArx提供的工作手册,找到了 SheetSet 的说明(如图),但是没有找到示例. 不过也可以了解到是 ...
- 向SqlSession中添加自定义数据源
作者:禅与计算机程序设计艺术 1.简介 在 Spring 中,SqlSession 的作用就是用来执行 SQL 命令,但在实际开发过程中,经常会遇到需要往查询出来的结果中添加一些额外的数据.或者需要将 ...
- Qt 快速入门学习笔记
Qt 快速入门学习笔记 环境安装 环境配置以及安装 安装包下载地址 1.windows安装 msvc编译器模块需要安装Windows软件开发工具包. MinGW是Windows平台使用GNU工具导入库 ...
最新文章
- 实现 Java 多线程并发控制框架
- iOS开发-项目的完整重命名方法,图文教程。
- 用宏定义实现函数值互换
- [云炬ThinkPython阅读笔记]1.6 形式语言和自然语言
- 真!长!啊!中国校名最长的学校竟然有55个字!
- 如何在没有配备U1芯片的iPhone上使用AIrTag?
- java开源内容发布系统_18个Java开源CMS系统一览
- Windows图片查看器不出现下一张和上一张按钮
- MATLAB实现短时傅里叶变换
- deviceOrientation简介
- fixed在ios失效解决方案
- PCA主成分分析(降维)
- 易经三原则:变易、简易、不易[转]
- 12864液晶深入学习笔记_1——基于msp430g2553
- pika.exceptions.ConnectionClosed 问题的解决
- 清览云题库--软件工程 ---第9章结构化实现及软件维护练习
- 2023 上半年软件设计师知识点复习总纲
- javascript的一点点学习记录
- [已解决]Object c,报错Expected method body
- SpringBoot + 阿里云 OSS 实现在线视频播放
热门文章
- Aristocracy, Democracy, and System Design 读书笔记
- localstorage,sessionstorage,cookie
- 新体育杂志新体育杂志社新体育杂志社新体育编辑部2022年第8期目录
- [系统安全] 二十五.WannaCry勒索病毒分析 (1)Python复现永恒之蓝漏洞实现勒索加密
- netbeans java中文_netbeans中文乱码解决方案
- FTP成功连接服务器后,出现乱码问题
- plsql能连mysql吗_明星就连拍结婚证件照,也能玩儿出花吗?
- python中的snip用法_--snip--总是报错,找了好久不知道问题出在哪,望大佬求解(python-pygame)...
- Python 面向对象 老虎和羊问题详解
- 黑龙江伊春现受伤雄性东北虎 目前已被成功救治