• Qt的QSettings类和.ini文件读写


    • Detailed Description
      QSettings类提供了持久的跨平台的应用程序设置。用户通常期望应用程序记住它的设置(窗口大小、位置等)所有会话。这些信息通常存储在Windows系统注册表,OS X和iOS的属性列表文件中。在Unix系统中,在缺乏标准的情况下,许多应用程序(包括KDE应用程序)使用INI文本文件。QSettings围绕这些抽象的技术,使我们能够以便携的方式保存和恢复应用程序设置。它还支持自定义存储格式。
      QSettings API基于QVariant,可以保存很多基础的类型,比如 QString、QRect、QImage等。
      如果你需要的是一个非持久性的基于内存结构,可以考虑使用QMap < QString, QVariant >代替。
    • Basic Usage
      当创建一个QSettings对象时,需要指定公司或组织名称以及产品名称。举个例子,产品名称为StarRunner公司名称为MySoft,那么可以创建如下的QSettings对象:
    QSettings settings("MySoft", "Star Runner");
    

    QSettings存储一系列的设置,每个设置包括指定设置名称(键)的一个字符串和一个与该键相关联的QVariant存储数据,使用setValue()来写入设置,举例如下:

    settings.setValue("editor/wrapMargin", 68);
    

    如果存在相同的设置键,现有的值将被新值覆盖。为了提高效率,这些变化可能不会被立即保存到永久存储(可以随时调用sync()来提交更改)。
    可以通过value()来得到一个设置的值:

     int margin = settings.value("editor/wrapMargin").toInt();
    

    如果键不存在,QSettings将会返回一个空的QVariant,这个空的QVariant可以转换为整数0。这时,我们可以通过另一个参数来指定默认值:

    int margin = settings.value("editor/wrapMargin", 80).toInt();
    

    为了测试一个给定的key是否存在,可以调用call()函数,可以通过调用remove()来移除相关的键,可以通过调用allKeys()得到所有的键,可以通过调用clear()来移除所有的键。

    • Member Function Documentation
    QSettings::QSettings(const QString &fileName, QSettings::Format format, QObject *parent = nullptr)
    

    构造一个QSettings对象,用于访问名为为fileName的存储文件。如果文件不存在,则创建文件。
    QSettings::Format format的可取参数为:

    Constant Value Description
    QSettings::NativeFormat 0 使用平台最合适的存储格式设置。在Windows中,使用系统注册表;OS X和iOS中,使用的是CFPreferences API;在Unix中,使用的是INI格式的文本配置文件
    QSettings::IniFormat 1 存储在INI文件中的设置。
    QSettings::Registry32Format 2 Windows only: Explicitly access the 32-bit system registry from a 64-bit application running on 64-bit Windows. On 32-bit Windows or from a 32-bit application on 64-bit Windows, this works the same as specifying NativeFormat. This enum value was added in Qt 5.7.
    QSettings::Registry64Format 3 Windows only: Explicitly access the 64-bit system registry from a 32-bit application running on 64-bit Windows. On 32-bit Windows or from a 64-bit application on 64-bit Windows, this works the same as specifying NativeFormat. This enum value was added in Qt 5.7.
    QSettings::InvalidFormat 16 Special value returned by registerFormat().
    void QSettings::setValue(const QString &key, const QVariant &value)
    

    设置value为key的值,如果key已经存在,之前的value值将会被覆盖。
    Eaxmple:

      QSettings settings;
      settings.setValue("interval", 30);
      settings.value("interval").toInt();     // returns 30
    
      settings.setValue("interval", 6.55);
      settings.value("interval").toDouble();  // returns 6.55
    
    QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const
    

    返回key的value,如果key不存在,返回默认值。
    Example:

    QSettings settings;
      settings.setValue("animal/snake", 58);
      settings.value("animal/snake", 1024).toInt();   // returns 58
      settings.value("animal/zebra", 1024).toInt();   // returns 1024
      settings.value("animal/zebra").toInt();         // returns 0
    
  • 相关阅读:
    DTM DEM DSM 介绍
    VC自定义消息
    一句话设计模式基本原则
    抽空写了一个ICON图标的转换程序
    (转载)C# 中的委托和事件
    类的字段和静态字段的使用
    Command 对象总结
    使用 DataReader 检索数据的步骤
    分享一部电影
    C#处理ACCESS数据库
  • 原文地址:https://www.cnblogs.com/Manual-Linux/p/11678633.html
Copyright © 2020-2023  润新知