- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
#include <QtCore/QCoreApplication>
#include <QVariant>
#include <QtDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QVariantMap map;
map["foo"] = QVariant(QVariantMap());
map["baz"] = "asdf";
qvariant_cast<QVariantMap>(map["foo"])["bar"] = "a";
qDebug() << qvariant_cast<QVariantMap>(map["foo"])["bar"].toString();
qDebug() << map["baz"].toString();
return a.exec();
}
我试图在嵌套的 QVariantMap 中分配给 QVariant。第一个 qDebug() 不输出任何内容,但第二个按预期输出“asdf”。我如何将嵌套变量映射中的“bar”键分配给一个值?
最佳答案
问题是 qvariant_cast 不返回对其运行的 QVariant 内部的引用;它返回一个拷贝。因此,如果您用新的子 map 覆盖顶级 map 中的“foo”元素,代码将正常工作:
#include <QtCore/QCoreApplication>
#include <QVariant>
#include <QtDebug>
int main(int argc, char** argv)
{
QCoreApplication a(argc, argv);
QVariantMap map;
map["foo"] = QVariant(QVariantMap());
map["baz"] = "asdf";
QVariantMap newMap;
newMap["bar"] = "a";
map["foo"] = QVariant(newMap);
qDebug() << qvariant_cast<QVariantMap>(map["foo"])["bar"].toString();
qDebug() << map["baz"].toString();
return a.exec();
}
大概,您想修改现有 map 而不是覆盖它。您可以通过复制现有 map 、添加新数据(这将导致深度复制),然后将 map 写回:
QVariantMap existingMap = qvariant_cast<QVariantMap>(map["foo"]);
existingMap["bar"] = "a";
map["foo"] = QVariant(existingMap);
如果您正在考虑存储大量数据,您可能希望重新考虑您对 QVariant 的使用。
关于c++ - 分配给嵌套的 QVariantMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11090846/
您好,我正在开发 Blackberry 10 应用程序。使用 momentics IDE (BB Native SDK) 下面这个错误真的很愚蠢。但是由于缺乏文档,我找不到解决方案。任何人都可以指导我
#include #include #include int main(int argc, char *argv[]) { QCoreApplication a(argc, argv);
我有一个 QVariantMap,它的键是一个字符串,值是一个数组(整数或字符串) 如何获取数组的各个元素? map["key"] 有一个 toList() 方法。我可以将其应用于数组吗? 最佳答案
我有一个 QVariantMap,它的键是一个字符串,值是一个数组(整数或字符串) 如何获取数组的各个元素? map["key"] 有一个 toList() 方法。我可以将其应用于数组吗? 最佳答案
使用QJson解析数据: "ShelveId": { "0": { "BeBoardId": { "0": { "connectionId": "board0"
基本上我需要生成一个嵌套的 QVariantMap。 (想想 JSON): { "foo" : 1, "bar" : { "node" : 0 } } 我在 Qt 中这样做是这样的: QVariant
我想在 symbian 应用程序中解析此 JSON 输出: [ {"ID":"9","titel":"wouter","plaatsID":"2616","prio":"3"}, {"
很抱歉问了这么琐碎的问题,但我似乎无法把它弄对,所以我想我完全误解了我认为我知道的关于内存管理的一切。 我有一个函数可以解析一些数据的网络回复,它看起来像这样: // Call from anothe
我正在为 IPC 使用 QTcpSockets。我以为 QTcpSocket readyReady 信号发射有问题。结果我遇到了 QTcpSocket 缓冲问题。 在正常情况下,有一段非常简单的代码可
我需要将 QVariantMap 序列化为 QByteArray,看起来合适的方法是通过 QDataStream。但是,这样做我遇到了很多麻烦。我没有收到任何错误,但实际上并没有将任何内容保存到字节数
我正在编写一个 Qt 应用程序,将 C++ 类映射到 QtWebkit 中的 Javascript 对象。首先让我解释一下我想做什么: 我有一个继承自 QObject 的类: class myobj
使用 QT 桥: myWebView->page()->mainFrame()->addToJavaScriptWindowObject("MyObj", myObjInstance); myObj
我不知道如何使用 QList 作为模型。有几个示例,其中数据类型是一维的,但还没有看到像这样嵌套的东西。相关代码如下: main.cpp - 在这里我注册了 QList viewer.rootCont
您好,我想将 javascript 函数从 qml 传递给 c++ 代码,然后再调用它,但坚持使用 QScriptValue 持有 QVariantMap,它不想从 javascript 访问。我是否
我是编程新手。我正在创建一个 Qt GUI 应用程序。这是一个小的拼字游戏。问题是每当我在构建它后从命令提示符启动这个程序时,我都会在命令提示符下得到以下输出: JumbleGame 1.0 Laun
QML/QT 无法将 C++ 中的 QList 转换为 javascript 中的对象数组。 class ParamListModel:QAbstractListModel { Q_OBJE
我试图在 qt 5.1 中为 json 创建一个包装类,我正在研究一个函数,该函数将检查输入的 var 是 QVariantMap 还是只是 QVariant,并且一切正常,直到我进入第二个muli
我是一名优秀的程序员,十分优秀!