QVariant 的使用 自定义类

本文介绍如何在Qt中使用Q_DECLARE_METATYPE宏注册自定义类型以便于通过QVariant进行传递,以int指针为例说明注册过程及在QTreeWidget中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先必须先注册myStructor--使用Q_DECLARE_METATYPE(myStructor)。
这是一个Macro--只能在全局中使用--否则出现错误。
然后就可以按一般的方法来赋值了--取值代码为 v.value < myStructor >();

用int指针作为例子--QVariant不支持此类型必须先注册。
ifndef __XXX__
define __XXX__

Q_DECLARE_METATYPE(int*);
...
endif

附带记下如何在QTreeWidget控件中附加数据
增加Item
QTreeWidgetItem* newItem = new QTreeWidgetItem;...
增加newItem到treeWidget中...
int* itemVal = new int (123);
QVariant Var;
Var.setValue (testVal);
// 已注册了int*--正确编译newItem->setData (0, 0, Var);
//newItem的第一列附加了Var--即指向itemVal的指针
//第二个参数为role角色的意思--我也不懂啥意思
点击某个条目获取对应的数据
on_treeWidget_click ()
{
...取得选择的条目-curItem...
//Data()的参数和当时设置数据的参数一样,value()是取得var的数据
int* ptr = curItem->Data (0, 0).value < int* >();
...对ptr进行处理...
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值