首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QSettings:移动/更改现有QSettings对象的范围/位置

QSettings:移动/更改现有QSettings对象的范围/位置
EN

Stack Overflow用户
提问于 2012-01-14 14:52:56
回答 1查看 727关注 0票数 0

我正在编写一个程序,它将其所有设置存储在一个QSettings对象中。现在,我想让用户可以选择在任何时候更改数据的存储位置。显然,QSettings没有提供更改其作用域并将其所有数据复制到新位置的功能,例如从注册表到%APPDATA%中的文件。

据我所知:

  • QSettings::setPath()在构造之前使用,不影响现有对象。复制操作符
  • 是私有的。我可以子类simultaneously.

,但我担心在复制操作期间由于其他线程编写QSettings而丢失设置。

如何动态地将程序设置移动和保留到新位置?如果可能的话,我真的很想用QSettings来实现这一点。

EN

回答 1

Stack Overflow用户

发布于 2012-01-16 20:13:43

线程安全的单例包装器类是一种选择吗?

代码语言:javascript
复制
class Settings {

public:
    static Settings& instance() 
    { 
        static Settings* inst = 0;
        if (!inst)
            inst = new Settings();
        return *inst; 
    }
    QSettings& getSettings { QMutexLocker(&m_mutex); return *m_settings; }
    bool migrateLocation(...) 
    { 
        QMutexLocker(&m_mutex); 
        QSettings* newSettings = new QSettings(...new parameters...);
        //... copy over the stuff
        delete m_settings;
        m_settings = newSettings;
    }
private:
    Settings() { m_settings = new QSettings(...); }

    static QMutex m_mutex;
    QSettings* m_settings;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8862974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档