3

在 .Net 中,您通常有一个 app.config 文件并内置了访问配置的方法。

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

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

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

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

4

1 回答 1

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

写作

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

于 2013-10-05T07:27:30.303 回答