Qt中setData()和data()用法
简述
最近在一个项目要到了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()用法相关推荐
- QT中Model-View-Delegate委托代理机制用法介绍
文章目录 本地数据加载(Data) 添加数据模型(Model) 添加代理模型(Proxy) 添加元素的代理(Delegate) 添加视图层(View) 使用效果 之前的一篇文章中介绍过QT的委托代理机 ...
- Qt中两种定时器用法
在Qt中使用定时器有两种方法,一种是使用QObiect类的定时器:一种是使用QTimer类.定时器的精确性依赖于操作系统和硬件,大多数平台支持20ms的精确度. 1.QObject类的定时器 QObj ...
- QT中QVector的基本用法
一.利用data把QVector中的数据取出来 T *QVector::data() Returns a pointer to the data stored in the vector. The p ...
- Qt中sender()函数的用法
你在一个槽里面,调用这个函数,返回的就是你信号来源的对象: QPushButton *aaaa = new QPushButton(this); 比如 connect(aaaaa, SIGNAL(Cl ...
- Qt中SQL QSqlQuery 对象中prepare() 函数的用法
Qt中利用SQL对数据库的操作和prepare()函数的使用 Qt数据库的初学说明 Qt中可以建立一个数据库,比如:QSqlDatabasedb:这是一个数据库对象db,在操作之前我们需要用QSQLI ...
- qt setData()和data()
简述 在GUI开发中,往往需要在界面中存储一些有用的数据,这些数据可以来自配置文件.注册表.数据库.或者是Server. 无论来自哪里,这些数据对于用户来说都是至关重要的,它们在交互过程中大部分 ...
- QT中QString的所有类用法大全
前言 之前用到QT中QString的用法,但总是忘记,这次自己整理出来,自己想用可以随时查看,同时也可以帮助到大家. 文章目录 前言 一.QString与其他变量的转换 1.QString::numb ...
- QT中的item views与Item widgets控件的用法总结
文章目录 0.前言 0.1 联系 0.2 区别 1.item views(以QTableView为例子) 2.item widgets(以QTableWidget为例子) 3.自定义 总结 0.前言 ...
- 关于Jquery中ajax方法data参数用法的总结
关于Jquery中ajax方法data参数用法的总结 jquery手册描述: 示例: $.ajax({type: "POST",url: "some.php", ...
最新文章
- matplotlib绘图大全
- 怎样用MATLAB将矩阵输出为图像并存到硬盘上-图像保存到硬盘
- PAT 1079. Total Sales of Supply Chain
- C#-面向对象的多态思想 ---ShinePans
- LOJ:出纳员问题(差分约束)
- H.264将普及 视频编码讲坛之H.264前世今生
- 浏览器兼容console对象的简要解决方案
- C++11 Lambda表达汇总总结
- C++ 中两个数据交换总结
- linux开发读取外部存储,Android 获取外接储存的设备路径(如挂载的U盘),android挂载...
- 中国有多少家银行 最全名单统计
- 接口各项性能测试指标
- 纬度、经度和坐标系网格
- 紫微斗数飞星派排盘批处理
- Unity实现瞄准镜效果之美
- openpyxl 单元格合并
- 过来人告诉你,去工作前最好还是学学Git
- 补丁问题(WannaCry)补丁问题
- ROS群机器人自动驾驶TensorFlow和人脸检测跟踪OpenCV
- 软件外包市场发展现状分析
热门文章
- TexturePacker是一款很强大的游戏图片制作工具
- 计算机证件照无法上传,为何不能上传照片
- 【Vue 项目】html2canvas + jspdf 实现将页面内容生成 PDF 及相关问题解决方案(页面被分页分割问题、html2canvas生成图片只有一半)
- 胡歌热播剧《猎场》遭差评 “程序猿”用自然语言分析揭真相
- Bzoj3041 水叮当的舞步
- nginx 容错机制
- 【Vue】小黑记事本
- hpdl388安装2012系统_惠普Hp DL380 GEN9 UEFI模式安装win2008 r2的方法
- 收费企业邮箱哪个好用,如何选择合适的公司企业邮箱?
- sql查询之 max使用