这是很容易的转换QVector<int>到QVariant,但否则是不平凡
QVector<int> v;
v.append(1);
v.append(2);
v.append(3);
QVariant var = QVariant::fromValue(v);
QVector v2(var.toList().toVector()); // fails, returns QVector<QVariant>
Run Code Online (Sandbox Code Playgroud)
首先:是否有任何Qt成语自动转换回来或我必须手动迭代var.toList()集合?
此外,整个操作非常昂贵:首先QList构建一个,然后QVector构造一个,然后将QVector其复制回来v2.有没有办法QVariant直接转换成QVector?Qt是否支持rvalue引用本身?
使用QVector<int> v2 = var.value<QVector<int>>();
您可以通过以下代码测试:
QVector<int> v2 = var.value<QVector<int>>();
qDebug() << "Size: " << v2.size();
for(int i = 0; i < v2.size(); i++)
    qDebug() << v2.at(i);
Run Code Online (Sandbox Code Playgroud)
看一下Qt文档中的方法值:
返回转换为模板类型T的存储值.调用canConvert()以查明是否可以转换类型.如果无法转换该值,则将返回默认构造的值.