QVariant 存贮指针类型
时间: 2023-09-08 16:16:48 浏览: 151
QVariant可以存储指针类型,但是需要注意以下几点:
1. QVariant不会对指针所指向的内存进行管理,也就是说,如果存储的是指针类型,需要确保指针所指向的对象在QVariant对象被销毁之前不会被释放或销毁。
2. 存储指针类型时,需要使用QVariant::fromValue()方法进行存储,使用QVariant::value()方法进行取值。
下面是一个存储指针类型的例子:
```cpp
#include <QVariant>
#include <QDebug>
class MyClass {
public:
MyClass(int value) : m_value(value) {}
int value() const { return m_value; }
private:
int m_value;
};
int main()
{
MyClass* ptr = new MyClass(123);
QVariant var = QVariant::fromValue(ptr);
MyClass* p = var.value<MyClass*>();
qDebug() << p->value();
// 注意:QVariant不会对指针所指向的内存进行管理,需要手动释放
delete ptr;
return 0;
}
```
运行结果:
```
123
```
在这个例子中,我们定义了一个名为MyClass的类,然后在main函数中创建了一个MyClass对象的指针ptr,并将其存储到了QVariant对象var中。可以使用 value() 方法获取QVariant对象中存储的指针类型,并通过指针访问MyClass对象的成员函数。需要注意的是,在释放ptr之前,不能销毁QVariant对象var,否则程序会崩溃。
阅读全文