将 QList 转换为 QVariant
Converting QList to QVariant
该类包含以下内容:
Q_PROPERTY(QList<double> switch1 READ switch1 WRITE setSwitch1 NOTIFY switch1Changed)
void setSwitch2(QList<double> arg)
{
if (m_switch2 != arg)
{
m_switch2 = arg;
emit switch2Changed(arg);
}
}
以下工作:
setSwitch2(QList<double>::fromVector(QVector<double>::fromStdVector(data->switch2)));
但现在我的数据类型是QVariantList
而不是QList<double>
.
我现在应该如何将QList替换为QVariant?
这不起作用:
setSwitch1(QVariantList::fromVector(QVector<QVariant>::fromStdVector(data->switch1)));
只需使用此构造函数:
QVariant::QVariant(const QList & val)
构造具有列表值 val 的新变型。
即,当将 QList 存储为 QVariant 时,QList 的模板类型必须是适合 QVariant 的类型。没有其他构造函数或转换方法。
你应该写这个:
QVariant variant(
QList<double>::fromVector(QVector<double>::fromStdVector(data->switch2))
);
setSwitchVariant(variant);
如果不需要构造函数:
QList<QUrl> params;
QVariant varParams;
varParams.setValue<QList<QUrl>>( params );
我知道
这与作者无关。但也许有人会派上用场。
qRegisterMetaTypeStreamOperators<QList<double>>("Stuff");
QList<double> lst;
// convert
QVariant varLst = QVariant::fromValue(lst);
// back
lst = varLst.value<QList<double>>();
列表有 QVariant 构造函数:QVariant(const QList &list)和 typedef QVariantList。两者都在一个漂亮的模板中切换:
template <class T> static QVariant toVariant(const QList<T> &list)
{
QVariantList variantList;
variantList.reserve(list.size());
for (const auto& v : list)
{
variantList.append(v);
}
return variantList;
}
相关文章:
- 从 json 字符串将 QVariant 转换为 QList<MyClass>
- 如何将 QVariant 转换为 QDomNode
- STD :: String和Qvariant(反之亦然)QT5之间的转换
- 无法检查带有值()的QVariant转换
- 如何将QList<T>转换为QVariant?
- 如何将QVariant转换为本机QtScriptValue(数字,字符串等)
- 未声明的标识符"QVariant"将旧版Qt 4转换为5
- QVariant 转换无法识别我的模板调用的 std::string
- 如何将Qvariant转换为QJSONVALUE
- QQmlListProperty已转换为不透明的QVariant
- COM对象,并返回QVariant强制转换问题
- 将任何QVariant转换为QString
- C 功能指针用于将QVariant转换为{自定义类型
- 将 QList 转换为 QVariant
- 我可以方便地将QVariant转换回QList<MyType>吗?
- 如何将自定义对象转换为QVariant
- 将 QVariant 转换为 QVector<int>
- 我如何将QVariant转换为QString,反之亦然
- QVariant中的自定义类型转换为空字符串
- 如何在从QVariant参数转换时选择方法重载