QJsonObject和QJsonArray的巨坑
最近用Qt的QJsonObject和QJsonArray当做类变量来存储运行信息,发现这两货真的是巨坑。让人有一种JJ fly的感觉/(ㄒoㄒ)/~~。
写了个例子来说明下:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
Dlldemo obj;
obj.test();
jsonArray.append(QJsonObject());
QJsonObject jo;
jo.insert("name","liying");
jsonArray.append(jo);
}
void MainWindow::on_lineEdit_textChanged(const QString &arg1)
{
qDebug()<<__FUNCTION__<<"---------------";
qDebug()<<__LINE__;
QJsonObject jo = jsonArray.at(0).toObject();
qDebug()<<__LINE__;
jo.insert("type",arg1);
qDebug()<<__LINE__;
jsonArray.replace(0,jo);
qDebug()<<__LINE__;
#if 0
//下面这种做法毫无效果
jsonArray[0].toObject().insert("type",arg1);
qDebug()<<jsonArray;
#endif
}
有一个LineEdit,我要在它的TextChanged事件中,修改QJsonObject。这段程序当连续输入"1111"时,会在jo.insert("type",arg1); 这句爆炸。这他妈几个意思,=_=。
既然是insert object的时候爆炸,那就先remove再insert
void MainWindow::on_lineEdit_2_textChanged(const QString &arg1)
{
qDebug()<<__FUNCTION__<<"---------------";
qDebug()<<__LINE__;
QJsonObject jo = jsonArray.at(0).toObject();
qDebug()<<__LINE__;
jo.remove("type");
qDebug()<<__LINE__;
jo.insert("type",arg1);
qDebug()<<__LINE__;
jsonArray.insert(0,jo);
qDebug()<<__LINE__;
}
(⊙o⊙)…并没什么卵效果。再继续
void MainWindow::on_lineEdit_3_textChanged(const QString &arg1)
{
qDebug()<<__FUNCTION__<<"---------------";
qDebug()<<__LINE__;
QJsonObject jo = jsonArray.takeAt(0).toObject();
qDebug()<<__LINE__;
jo.remove("type");
qDebug()<<__LINE__;
jo.insert("type",arg1);
qDebug()<<__LINE__;
jsonArray.insert(0,jo);
qDebug()<<__LINE__;
qDebug()<<jsonArray;
}
Oh,Yeah.屌爆了,可以输入好几个。
但是多输入几次就发现,依然会爆炸。
(⊙o⊙)…。恶心死了。这玩意到底应该怎么用??????
我最后的结论就是:
不要用QJsonArray QJsonObject来存储信息,尤其是需要频繁改动的时候
呵呵O(∩_∩)O~
QJsonObject和QJsonArray的巨坑的更多相关文章
- 【走过巨坑】android studio对于jni调用及运行闪退无法加载库的问题解决方案
相信很多小伙伴都在android开发中遇到调用jni的各种巨坑,因为我们不得不在很多地方用到第三方库so文件,然而第三方官方通常都只会给出ADT环境下的集成方式,而谷歌亲儿子android studi ...
- 【单页应用巨坑之History】细数History带给单页应用的噩梦
前言 在我们日常的网页浏览中,我们非常喜欢做一个操作:点击浏览器的前进后退在Ajax技术出现后,有些时候前进后退就会给开发者带来困扰,甚至一些开发者试图去干掉History随着Html5的发展,移动端 ...
- bat调用bat的一个巨坑
[一个巨坑] a.bat的内容:echo 1b.batecho 2执行结果:运行a.bat时,输出1,然后调用b.bat, 但是 echo 2 显示不出来. bat怎么调用bat文件并返回? 例如主文 ...
- better-scroll之吸顶效果巨坑挣扎中
今天和大家分享下better-scroll这款移动端用来解决各种滚动需求的插件(目前已经支持PC) 关于其中的API大家可以去官网看下 这里就给大家介绍几种常用的以及需要注意的点是什么 首先说一下b ...
- (杭电 2054)A==B?(这真是个巨坑)
A == B ? Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- SpriteKit在复制节点时留了一个巨坑给开发者,需要开发者手动把复制节点的isPaused设置为false
根据When an overlay node with actions is copied there is currently a SpriteKit bug where the node’s is ...
- 关于代码通过API操作阿里云RDS的巨坑
由于项目原因,要通过API操作阿里云的数据库,于是简单研究了一下阿里云提供的相关文档,发现官方提供了.NET的SDK,而且还提供了github开源代码,这个要为阿里点赞! 于是到github上弄了一份 ...
- 史上巨坑: vim的"set foldmethod=syntax"设置竟然是导致ctrl+p(ctrl+n)补全在文件稍大时光标位于中间位置补全效率变慢的元凶!
最近我的vim又让我闹心了. 问题出现在supertab的补全速度上, 有时候按下tab键半天才弹出补全列表, 即便是弹出了列表在列表上下移动也变得的相当缓慢, 这让我的很是蛋疼. 在完全无法接受这个 ...
- POJ 3178 凸包+DP (巨坑)
题意: 思路: 这题巨坑!!! 这题巨坑!!! 这题巨坑!!! 这题巨坑!!! 这题巨坑!!! (而且没有题解--.5555555--) 只能照着自己想的写了-- 先求出来凸包 求凸包的方法呢:先找出 ...
随机推荐
- Android音频系统之AudioFlinger(二)
1.1.1 音频设备的管理 虽然AudioFlinger实体已经成功创建并初始化,但到目前为止它还是一块静态的内存空间,没有涉及到具体的工作. 从职能分布上来讲,AudioPolicyService是 ...
- 采用多线程方式,解决由于查询等待造成winfrom假死问题
1.这里是触发一个比较耗时的操作,比如一次大数据量的查询: Thread thread = new Thread(new ThreadStart(DoWord)); thread.Start(); 2 ...
- HDU 2498 Digits
水题.题目这样定义的,另f(x)为x有几位,x[i]=f(x[i-1]); 求最小的i使得x[i]==x[i-1] #include<cstdio> #include<cstring ...
- Spark1.3.0安装
之前在用Hadoop写ML算法的时候就隐约感觉Hadoop实在是不适合ML这些比较复杂的算法.记得当时写完kmeans后,发现每个job完成后都需要将结果放在HDFS中,然后下次迭代的时候再从文件中读 ...
- input有许多,点击按钮使用form传递文本框的值
input有许多,点击按钮使用form传递文本框的值 <form name="form1" method="post" action="< ...
- dsp与dmp的cookie mapping
dsp ad.com 在 meijiu.com上部署广告. 假设dmp叫cm.api.taobao.com 建立gid映射表 (1) ad.com在meiju.com的页面上部署,指向dmp ...
- APP导致界面卡死,iPhone卡死
实测,是 Reachability 类创建实例过多导致 http://stackoverflow.com/questions/34063166/ios-9-app-freeze-with-consol ...
- iOS常用的第三方库GitHub地址
MJRefresh https://github.com/CoderMJLee/MJRefresh#期待 Facebook-POP https://github.com/facebook/pop /* ...
- Java编译时出现No enclosing instance of type XXX is accessible.
今天在编译Java程序的时候出现以下错误: No enclosing instance of type Main is accessible. Must qualify the allocation ...
- 实时 Django 终于来了 —— Django Channels 入门指南
Reference: http://www.oschina.net/translate/in_deep_with_django_channels_the_future_of_real_time_app ...