关于QVariant存放指针,突然想到一个简单的方法,那就是使用union
直接上代码
union MyData
{
int Address;
MyClass* Pointer;
}
...
//存
MyClass* myData = new MyClass();
QTreeWidgetItem* item = new QTreeWidgetItem("Item");
MyData myData;
myData.Pointer= myData;
item->setData(0, QVariant::formValue(myData.Address)) ;
//取
QVariant data = item->data(0);
if(data.isValid())
{
MyData myData;
myData.Address = data.toInt();
MyClass* object = myData.Pointer;
}
用这种方法在拖拽item时不会出现QT的断言错误,不过在存和取之间要保证对象没有被删除