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

时间:2013-10-05 07:24:37

标签: c++ linux qt qtcore qsettings

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

使用Qt配置是否有相同的标准方法?

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

这是“滚动你自己”的情况,还是有办法使用XML或Qt提供的简单读/写方法存储和读取这些配置?

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

1 个答案:

答案 0 :(得分:4)

您可以使用QSettings。有关详细信息,请参阅文档:

http://qt-project.org/doc/qt-5.1/qtcore/qsettings.html

您可以随时使用其他格式,例如XML,Json等,但一般来说,QSettings就是这样,或者如果您正在编写KDE应用程序,那么可能KConfig

这是处理QSettings进行读写时需要注意的两个重要方法:

Reading

QVariant QSettings::value(const QString & key,
                          const QVariant & defaultValue = QVariant()) const

Writing

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

  •