Qt版本:6.5.1
网上搜到的教程都说必须对自定义类型调用宏 Q_DECLARE_METATYPE 向 Qt 的元系统声明这个自定义类型。我创建了一个小例子进行测试,发现可以直接调用 QVariant::setValue() 保存自定义类型,不需要调用 Q_DECLARE_METATYPE。
代码如下:
````````````````````````````````````````````
#include <QCoreApplication>
#include <QVariant>
struct Entity
{
int value;
QString str;
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Entity entity;
entity.value = 12345;
entity.str = "hello, world";
QVariant variant;
variant.setValue(entity);
Entity receiver = variant.value<Entity>();
qDebug() << receiver.value;
qDebug() << receiver.str;
return a.exec();
}
````````````````````````````````````````````
这段代码有什么问题吗?是否因为Qt版本更新后不再需要调用 Q_DECLARE_METATYPE
|