我正在编写一个程序,它将所有设置存储在QSettings对象中。现在,我想让用户可以随时更改其数据的存储位置。显然,QSettings无法更改其范围并将其所有数据复制到新位置,例如从注册表到%APPDATA%中的文件。
我所知道的:
如何将我的程序设置动态移动并保留到新位置?如果可能的话,我真的很想用QSettings实现这个目标。
答案 0 :(得分:0)
线程安全的单例包装类是一个选项吗?
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;
}