在.Net中,您通常有一个app.config文件,并以访问配置的方式构建。
使用Qt配置是否有相同的标准方法?
例如,假设我的应用程序连接到在线服务器,我希望能够存储连接详细信息(用户定义)。
这是“滚动你自己”的情况,还是有办法使用XML或Qt提供的简单读/写方法存储和读取这些配置?
编辑:为问题添加一些复杂功能。这是一个Linux控制台应用程序,所以请专门寻找基于文件和透明的配置。
答案 0 :(得分:4)
您可以使用QSettings
。有关详细信息,请参阅文档:
http://qt-project.org/doc/qt-5.1/qtcore/qsettings.html
您可以随时使用其他格式,例如XML,Json等,但一般来说,QSettings就是这样,或者如果您正在编写KDE应用程序,那么可能KConfig
。
这是处理QSettings进行读写时需要注意的两个重要方法:
QVariant QSettings::value(const QString & key,
const QVariant & defaultValue = QVariant()) const
void QSettings::setValue(const QString & key, const QVariant & value)
然后,您可以简单地坚持原生格式(如果您愿意,甚至可以使用Linux上的ini):
QSettings :: NativeFormat 0使用最多存储设置 适当的平台存储格式。在Windows上,这意味着 系统注册表;在Mac OS X上,这意味着CFPreferences API;上 Unix,这意味着INI格式的文本配置文件。
您可以在这里找到一个方便的例子:
#include <QSettings>
int main()
{
....
QSettings settings("Foo", "Bar");
// settings.beginGroup("application");
QString string = settings.value("foo", "bar");
// settings.endGroup();
....
}
注意,这些组是可选的,这取决于您的确切目的。您可以对设置进行分组以保持某些封装。
根据文档,这对您来说也很重要:
在Unix系统上,如果文件格式为NativeFormat,则默认使用以下文件:
$ HOME / .config / MySoft / Star Runner.conf(嵌入式Linux的Qt:$ HOME / Settings / MySoft / Star Runner.conf)
$ HOME / .config / MySoft.conf(嵌入式Linux的Qt:$ HOME / Settings / MySoft.conf)
/ etc / xdg / MySoft / Star Runner.conf
/etc/xdg/MySoft.conf