Arm机上QSettings问题???

songhuirong1 2013-08-23 01:09:27
我最近在Tiny6410上做Qt开发,发现一个奇怪的问题,就是如果arm机突然非法断电,那么所有之前QSettings设置过的值都会消失。我看了arm板,如果正常的话,那么会在/root/Settings/下会生成一个配置文件,我的机子上是/root/Settings/hzdcdz/seafood.conf,在这个文件里保存了所以QSettings设置的值。如果某个时刻,突然断电,那么这个文件里的内容就会全部消失,导致之前QSettings设置过的值全部消失,请问这个问题该如何解决呢?我知道改用数据库来保存是可以的,但是改动太大,有没有其它的办法。谢谢了!
...全文
186 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yeamon 2015-12-23
  • 打赏
  • 举报
回复
非常感谢poseidon00000的分享,这个问题折腾了好久。
poseidon00000 2014-05-21
  • 打赏
  • 举报
回复
不知道你知道原因没有,这个问题我遇到过,就算是调用QSettngs的sync()方法也不行。和文件系统有关系,我当时用的是ubi文件系统,它里面的磁盘缓存可能有点问题,需要调用c库函数sync()才行。就是你先调用QSettings的sync方法,接着调用c库的sync函数,应该就没问题了。
songhuirong1 2013-08-24
  • 打赏
  • 举报
回复
大家帮帮忙。等待高手出现。
songhuirong1 2013-08-23
  • 打赏
  • 举报
回复
引用 1 楼 ppdayz 的回复:
每做一个改动就存一次,这个是最简单也是最有效的办法 通常QSsettings是咋销毁的时候保存,可以用sync()函数手动保存。每改一次,sync一次 void QSettings::sync() Writes any unsaved changes to permanent storage, and reloads any settings that have been changed in the meantime by another application. This function is called automatically from QSettings's destructor and by the event loop at regular intervals, so you normally don't need to call it yourself.
我就是这么做的,用了sync函数,但是依然如此。
ppdayz 2013-08-23
  • 打赏
  • 举报
回复
每做一个改动就存一次,这个是最简单也是最有效的办法 通常QSsettings是咋销毁的时候保存,可以用sync()函数手动保存。每改一次,sync一次 void QSettings::sync() Writes any unsaved changes to permanent storage, and reloads any settings that have been changed in the meantime by another application. This function is called automatically from QSettings's destructor and by the event loop at regular intervals, so you normally don't need to call it yourself.

16,173

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧