#include <QCoreApplication>
#include <QDebug>
#include <QVariantMap>
Q_DECLARE_METATYPE(QVariantMap)
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QVariantMap map;
map.insert("zz", "ZZ");
map.insert("yy", "YY");
QVariant var = map;
QVariantMap map2 = var.value<QVariantMap>();
QVariantMap::Iterator it;
for (it = map2.begin(); it != map2.end(); ++it) {
qDebug() << it.key().toLatin1().data();
qDebug() << it.value().toString().toLatin1().data();
}
return a.exec();
}
结果:
zz
ZZ
yy
YY
使用Q_DECLARE_METATYPE()定义一个任意类型, 比如数据库模型Model, 或者Model的集合
Q_DECLARE_METATYPE(Model);
Q_DECLARE_METATYPE(QList<Model>);
就可以将此类型赋给QVariant 变量var.
取值的时候,不能使用toInt(), toString()等内建的方法, 需要用模版形式
var.value<QVariantMap>()