【问题标题】:What's the standard approach for configuration in Qt console apps?Qt 控制台应用程序中配置的标准方法是什么?
【发布时间】:2013-10-12 06:37:16
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c++ linux qt qtcore qsettings


    【解决方案1】:

    您可以为此使用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

    【讨论】:

      猜你喜欢
      • 2016-06-24
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 2010-12-17
      • 2011-01-21
      • 2010-10-26
      • 1970-01-01
      相关资源
      最近更新 更多