将 QVariant 转换为 QVector<int>

Converting QVariant to QVector<int>

本文关键字:lt int gt QVector QVariant 转换      更新时间:2023-10-16

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>

首先:是否有任何Qt习语自动转换回来,或者我必须在var.toList()集合手动迭代?

此外,整个操作非常昂贵:首先构造QList,然后构造QVector,然后将QVector复制回v2。是否有办法将QVariant直接转换为QVector ?Qt本身支持右值引用吗?

使用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);

查看Qt文档中的方法值:

返回转换为模板类型t的存储值。调用canConvert()查看是否可以转换类型。如果不能转换该值,则返回一个默认构造的值。