首先必须先注册myStructor--使用Q_DECLARE_METATYPE(myStructor)。
这是一个Macro--只能在全局中使用--否则出现错误。
然后就可以按一般的方法来赋值了--取值代码为 v.value < myStructor >();
例子:
将一个指针赋予QVariant--可能有需要将一个指针赋予树型列表控件(QTreeWidget)中一个条目--点击此条目获取指针对数据进行处理--而无须通过查找来取得数据--缩短处理时间。
用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进行处理...
}