Qt控制台应用程序中配置的标准方法是什么?

JL.*_*JL. 3 c++ linux qt qsettings qtcore

在.Net中,您通常有一个app.config文件,并且以访问配置的方式构建。

是否有使用Qt进行配置的等效标准方法?

例如,假设我的应用程序连接到在线服务器,我希望能够存储连接详细信息(用户定义)。

这是“自己动手”的情况,还是有一种使用XML或Qt提供的简单读写方法的其他格式存储和读取这些配置的方法?

编辑:给问题增加一些复杂性。这是一个Linux控制台应用程序,因此请专门寻找基于文件的透明配置。

lpa*_*app 5

您可以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
Run Code Online (Sandbox Code Playgroud)

写作

void QSettings::setValue(const QString & key, const QVariant & value)
Run Code Online (Sandbox Code Playgroud)

然后,您可以简单地遵循本机格式(如果愿意,甚至可以使用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();

   ....

}
Run Code Online (Sandbox Code Playgroud)

请注意,这些组是可选的,并且取决于您的确切目的。您可以使用这种方式对设置进行分组,以使某些设置得以封装。

根据文档,这对您来说也可能很重要:

在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