2010-05-17 60 views
3

我有一个非常标准的Qt GUI应用程序。它使用Qt的QSettings来存储一些设置,并且一切正常。Qt - 同一应用的多个副本打开并设置同步

然而,当应用程序的多个副本推出,并设置在一个或另一个改变,不同的副本会出现不一致(如一个具有数据的“老”的复印件)。

什么是解决这一问题的最佳解决方案?我猜这个问题甚至发生在Qt竞技场之外。

+0

请在这里发布一些代码,你是如何在源代码中定义QSettings类的。 – mosg 2010-05-17 14:11:50

回答

0

我一直认为有对同一数据集上运行多个应用程序,具有很高的碰撞概率的,有点毛。

也许你最好只禁止多个实例,并使用QtSingleApplicationQt Solutions repository(以及其他好的小部件)中找到。

1

的QSettings文档提到这在Accessing Settings from Multiple Threads or Processes Simultaneously部分:

  • QSettings可以安全地从不同的工艺中使用(其可以是在相同的时间或不同的应用程序完全运行应用程序的不同实例)来读取和写入相同的系统位置。它使用咨询文件锁定和智能合并算法来确保数据的完整性。在调用sync()之前,其他进程执行的更改在当前进程中不可见。

您是否在尝试从写入器应用程序写入值并从读取器应用程序读取它们之前调用yoursettings.sync()?如果是这样,如果你的逻辑是正确的,这听起来像一个Qt错误。