我正在Ini文件中保存应用数据。方法如下:
QSettings IniFile(K_COMPNAME,K_INIFILENAME);
QSettings::setDefaultFormat(QSettings::IniFormat);
IniFile.setValue("Location",loc);
IniFile.setValue("BaudRate",baud);
IniFile.sync();
K_INIFILENAME是一个常数"设置"。
我希望与我的exe相同的文件夹中的Settings.ini。
但不是。而是将其保存在Registry中。因为我这样做
qDebug() << IniFile.fileName();
它返回:
&#34; \ HKEY_CURRENT_USER \ SOFTWARE \ MyCompany的\设置&#34;
我的问题是为什么会这样,以及如何将其保存在Ini文件中。
答案 0 :(得分:2)
QSettings
构造函数的documentation声明:
在调用此构造函数之前使用setDefaultFormat() 更改此构造函数使用的默认格式。
因此,请在创建setDefaultFormat
对象之前致电QSettings
:
QSettings::setDefaultFormat(QSettings::IniFormat);
QSettings IniFile(K_COMPNAME,K_INIFILENAME);
IniFile.setValue("Location",loc);
IniFile.setValue("BaudRate",baud);
IniFile.sync();
答案 1 :(得分:2)
请记住使用构造函数:
QSettings IniFile(K_COMPNAME,K_INIFILENAME);
构造一个QSettings对象来访问 来自组织的名为 application 的应用程序 的组织强>,
范围设置为QSettings :: UserScope,格式设置为 QSettings :: NativeFormat(即之前调用setDefaultFormat() 调用此构造函数无效)。
这意味着它是一个注册表有效的构造函数(在windows下).. INI格式的正确方法是:
QCoreApplication::setOrganizationName(K_COMPNAME);
QCoreApplication::setApplicationName(K_INIFILENAME);
QSettings::setDefaultFormat(QSettings::IniFormat);
QSettings IniFile;
以上代码将使用INI格式,设置存储在FOLDERID_RoamingAppData
例如:FOLDERID_RoamingAppData\<K_COMPNAME>\<K_INIFILENAME>
现在只有一个构造函数存储在本地INI(settings.ini
)文件中,如下所示:
QSettings IniFile(K_INIFILENAME,QSettings::IniFormat);