Qt 界面数据的存取
2017-08-01 16:12
155 查看
参考:Qt之界面数据存储与获取
常用函数
// 注:凡是 QObject 的子类都可以使用 setUserData() 和 userData() // 存 setData() setItemData() setUserData() // 取 data() itemData() userData()
自定义类型注册为 QVariant
// 用户信息 struct User : QObjectUserData { int iD; // ID QString name; // 用户名 }; //注册后可被 QVariant 接收 Q_DECLARE_METATYPE(User)
用法
定义用户数据类型
// 在头文件中定义结构体 struct User : QObjectUserData { int iD; // ID QString name; // 用户名 };
传入用户数据
User *user = new User(); user->iD = 1; user->name = "Qter"; QPushButton *pButton = new QPushButton(this); //传入第一个用户数据 pButton->setUserData(Qt::UserRole, user); //传入第二个用户数据 pButton->setUserData(Qt::UserRole+1, user); // 关联解析用户数据的槽函数 connect(pButton, &QPushButton ::clicked, this, &MainWindow::onBtnClicked);
获取用户数据
void MainWindow::onBtnClicked() { // 获取发送者 QObject *pObject = this->sender(); QPushButton *pButton = qobject_cast<QPushButton *>(pObject); // 获取第一个用户数据 User *pUser = (User *)(pButton->userData(Qt::UserRole)); qDebug() << "ID : " << pUser->nID; qDebug() << "Name : " << pUser->strName; // 获取第二个用户数据 pUser = (User *)(pButton->userData(Qt::UserRole + 1)); qDebug() << "ID : " << pUser->nID; qDebug() << "Name : " << pUser->strName; }
相关文章推荐
- 对于Qt界面类结构与数据复制存放问题总结
- Qt之界面数据存储与获取
- QT界面程序经过网路与普通的linux应用程序进行数据传送的情况
- QML界面与Qt/C++代码进行数据交互
- Qt之界面数据存储与获取(使用setUserData()和userData())
- Qt之界面数据存储与获取(userData)
- Qt之界面数据存储与获取(使用setUserData()和userData())
- Qt 异步加载界面或者异步处理数据
- Qt之界面数据存储与获取
- 使用QT界面进行onetnet数据上传与下载
- 孙其功陪你学之--QT界面程序经过网路与普通的linux应用程序进行数据传送的情况(UDP协议,非TCP协议):
- iOS——数据存取
- Android学习笔记-界面和数据存储以及一些零碎知识点
- qt界面自动放大缩小【转】
- SmartGWT 进阶,第 1 部分: 数据和界面轻松整合
- qt 5 小练习 创建无边框界面
- Qt_log2000_界面框架下的函数指针初探
- 数据的存取路径
- 屏蔽掉应用程序界面的"清除数据"功能
- 从零开始学习OpenGL ES之八 – 交叉存取顶点数据