我正在编写一个程序,它将其所有设置存储在一个QSettings对象中。现在,我想让用户可以选择在任何时候更改数据的存储位置。显然,QSettings没有提供更改其作用域并将其所有数据复制到新位置的功能,例如从注册表到%APPDATA%中的文件。
据我所知:
,但我担心在复制操作期间由于其他线程编写QSettings而丢失设置。
如何动态地将程序设置移动和保留到新位置?如果可能的话,我真的很想用QSettings来实现这一点。
发布于 2012-01-16 20:13:43
线程安全的单例包装器类是一种选择吗?
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;
}https://stackoverflow.com/questions/8862974
复制相似问题