简述

最近在一个项目要到了setData()和data()

常见接口

1、**setdata()**存储数据
2、**data()**取出数据

单独存储

1、通过setData(),我们可以单独存储用户数据,使用Qt::UserRole、Qt::UserRole + 1.。。。。

QListWidget *pListWidget = new QListWidget(this);int i = 0;for(i = 0; i  < 5; ++i ){QListWidgetItem *pItem = new QListWidgetItem(pListWidget);pItem->setData(Qt::UserRole + 1, QString("数据 %1").arg(i));  // 用户数据pItem->setData(Qt::UserRole + 2, QString("测试 %1").arg(i));pItem->setText(QString("Item %1").arg(i));  // 文本pListWidget->addItem(pItem);}// 连接信号槽connect(pListWidget, &QListWidget::itemClicked, this, &Widget::onItemClicked);

槽函数取出数据

void onItemClicked(QListWidgetItem *item) {int nID = item->data(Qt::UserRole).toInt();  // 获取用户数据QString strName = item->data(Qt::UserRole + 1).toString();  // 获取用户数据QString strC = item->data(Qt::UserRole + 2).toString();qDebug() << "ID : " << nID;qDebug() << "Name : " << strName;qDebug() << "strC" << strC;
}

整体存储

也可以通过**setData()**进行整体存储,这时候只需要使用Qt::UserRole即可,把用户数据当成一个结构体来存储。
1、定义一个结构体

//用户信息
struct User : QObjectUserData
{int nID;   //IDQString strName;//用户名
};
QListWidget *pListWidget = new QListWidget(this);
int i = 0;
do {++i;QListWidgetItem *pItem = new QListWidgetItem(pListWidget);User user;user.nID = i;user.strName = QString("Qter %1").arg(i);pItem->setData(Qt::UserRole, QVariant::fromValue(user));  // 设置用户数据pItem->setText(QString("Item %1").arg(i));pListWidget->addItem(pItem);
} while (i < 5);

槽函数

void onItemClicked(QListWidgetItem *item) {QVariant variant = item->data(Qt::UserRole);  // 获取用户数据User user = variant.value<User>();qDebug() << "ID : " << user.nID;qDebug() << "Name : " << user.strName;
}

Qt中setData()和data()用法相关推荐

  1. QT中Model-View-Delegate委托代理机制用法介绍

    文章目录 本地数据加载(Data) 添加数据模型(Model) 添加代理模型(Proxy) 添加元素的代理(Delegate) 添加视图层(View) 使用效果 之前的一篇文章中介绍过QT的委托代理机 ...

  2. Qt中两种定时器用法

    在Qt中使用定时器有两种方法,一种是使用QObiect类的定时器:一种是使用QTimer类.定时器的精确性依赖于操作系统和硬件,大多数平台支持20ms的精确度. 1.QObject类的定时器 QObj ...

  3. QT中QVector的基本用法

    一.利用data把QVector中的数据取出来 T *QVector::data() Returns a pointer to the data stored in the vector. The p ...

  4. Qt中sender()函数的用法

    你在一个槽里面,调用这个函数,返回的就是你信号来源的对象: QPushButton *aaaa = new QPushButton(this); 比如 connect(aaaaa, SIGNAL(Cl ...

  5. Qt中SQL QSqlQuery 对象中prepare() 函数的用法

    Qt中利用SQL对数据库的操作和prepare()函数的使用 Qt数据库的初学说明 Qt中可以建立一个数据库,比如:QSqlDatabasedb:这是一个数据库对象db,在操作之前我们需要用QSQLI ...

  6. qt setData()和data()

     简述 在GUI开发中,往往需要在界面中存储一些有用的数据,这些数据可以来自配置文件.注册表.数据库.或者是Server. 无论来自哪里,这些数据对于用户来说都是至关重要的,它们在交互过程中大部分 ...

  7. QT中QString的所有类用法大全

    前言 之前用到QT中QString的用法,但总是忘记,这次自己整理出来,自己想用可以随时查看,同时也可以帮助到大家. 文章目录 前言 一.QString与其他变量的转换 1.QString::numb ...

  8. QT中的item views与Item widgets控件的用法总结

    文章目录 0.前言 0.1 联系 0.2 区别 1.item views(以QTableView为例子) 2.item widgets(以QTableWidget为例子) 3.自定义 总结 0.前言 ...

  9. 关于Jquery中ajax方法data参数用法的总结

    关于Jquery中ajax方法data参数用法的总结 jquery手册描述: 示例: $.ajax({type: "POST",url: "some.php", ...

最新文章

  1. matplotlib绘图大全
  2. 怎样用MATLAB将矩阵输出为图像并存到硬盘上-图像保存到硬盘
  3. PAT 1079. Total Sales of Supply Chain
  4. C#-面向对象的多态思想 ---ShinePans
  5. LOJ:出纳员问题(差分约束)
  6. H.264将普及 视频编码讲坛之H.264前世今生
  7. 浏览器兼容console对象的简要解决方案
  8. C++11 Lambda表达汇总总结
  9. C++ 中两个数据交换总结
  10. linux开发读取外部存储,Android 获取外接储存的设备路径(如挂载的U盘),android挂载...
  11. 中国有多少家银行 最全名单统计
  12. 接口各项性能测试指标
  13. 纬度、经度和坐标系网格
  14. 紫微斗数飞星派排盘批处理
  15. Unity实现瞄准镜效果之美
  16. openpyxl 单元格合并
  17. 过来人告诉你,去工作前最好还是学学Git
  18. 补丁问题(WannaCry)补丁问题
  19. ROS群机器人自动驾驶TensorFlow和人脸检测跟踪OpenCV
  20. 软件外包市场发展现状分析

热门文章

  1. TexturePacker是一款很强大的游戏图片制作工具
  2. 计算机证件照无法上传,为何不能上传照片
  3. 【Vue 项目】html2canvas + jspdf 实现将页面内容生成 PDF 及相关问题解决方案(页面被分页分割问题、html2canvas生成图片只有一半)
  4. 胡歌热播剧《猎场》遭差评 “程序猿”用自然语言分析揭真相
  5. Bzoj3041 水叮当的舞步
  6. nginx 容错机制
  7. 【Vue】小黑记事本
  8. hpdl388安装2012系统_惠普Hp DL380 GEN9 UEFI模式安装win2008 r2的方法
  9. 收费企业邮箱哪个好用,如何选择合适的公司企业邮箱?
  10. sql查询之 max使用