【发布时间】:2011-11-04 17:08:18
【问题描述】:
我正在使用非 gui 产品的 Qsettings 将其设置存储到 xml 文件中。这被编写为用于 C、C++ 程序的库。每个产品将有 1 个 xml 文件文件。每个产品可能有多个子产品,它们通过子产品分组写入 xml 如下 -
文件:“product1.xml”
<product1>
<subproduct1>
<settings1>..</settings1>
....
<settingsn>..</settingsn>
</subproduct1>
...
<subproductn>
<settings1>..</settings1>
....
<settingsn>..</settingsn>
</subproductn>
</product1>
文件:productn.xml
<productn>
<subproduct1>
<settings1>..</settings1>
....
<settingsn>..</settingsn>
</subproduct1>
...
<subproductn>
<settings1>..</settings1>
....
<settingsn>..</settingsn>
</subproductn>
</productn>
一个进程中的代码执行以下操作 -
settings = new QSettings("product1.xml", XmlFormat);
settings.setValue("settings1",<value>)
sleep(20);
settings.setValue("settings2", <value2>)
settings.sync();
当第一个进程进入睡眠状态时,我启动另一个进程,它执行以下操作 -
settings = new QSettings("product1.xml", XmlFormat);
settings.remove("settings1")
settings.setValue("settings3", <value3>)
settings.sync();
我希望 settings1 从 product1.xml 文件中消失,但它仍然存在于文件中 - product1.xml 在上述两个过程结束时。我没有在我的设置库中使用 QCoreApplication(..)。以上设计如有问题请指出问题。
【问题讨论】:
-
“settings3”行是否执行?
-
只是好奇,您是否自己为 QSettings 编写了 XML 解析器?我正在寻找一个适用于数组的工作版本。