2010-05-17 55 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錯誤。