【问题标题】:How to get data in form of QString from QVariant in Qt5?如何从 Qt5 中的 QVariant 获取 QString 形式的数据?
【发布时间】:2018-01-04 08:44:27
【问题描述】:

我有一个带有 userType QVariantList 的 QVariant,当我对 qvariant 进行 qDebug 时,确切的格式如下所示

QVariant(QVariantList, (QVariant(QVariantMap, QMap(("name", QVariant(QString, "UK English Female"))))

我想要变体中的 QString, "UK English Female" 我如何才能知道我已经尝试过 QVariant.toStringList() 但字符串列表是空的。 谢谢。

【问题讨论】:

  • 你能提供一个SSCCE吗?目前还不清楚你在问什么。看起来你需要写几行代码来构建一个字符串,但你不需要。

标签: c++ qt qt5 qvariant


【解决方案1】:

从显示为调试输出的内容来看,我推测它是以类似方式生成的:

QVariantMap map;

map.insert("name", QVariant("UK English Female"));
qDebug() << QVariant(QVariantList{QVariant(map)});

因此你有一个字符串数据,它被埋藏在一系列容器中相对较深的地方。

那么,怎么去呢?

作为一个整体,你有一个 QVariant 持有一个具有单个 QVariant 值的 QVariantList,而这又是一个 QMap。该地图有一个 QVariant 类型的键 name,其中包含一个 QString。链接必要的转换,我们最终得到:

qDebug() << myVar.value<QVariantList>().first().toMap().value("name").toString();

假设整个事情都保存在QVariant myVar;

【讨论】:

  • 非常感谢它解决了我的问题。实际上是通过在 QWebview 中调用 JS 函数来获得该变体。 :)
猜你喜欢
  • 2018-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多