zoukankan      html  css  js  c++  java
  • Qt配置信息设置(QSettings在不同平台下的使用路径)

    在Windows操作系统中,大多把配置文件信息写在注册表当中,或写在*.ini文件中,对于这两种操作都有相应的Windows API函数,在以前的文章中都提及过,这里就不多说了~

    在Qt中,提供了一个相应的配置文件的类QSetting,使用QSetting类,可以将用户设置以及应用程序的设置轻松存储在磁盘中。

    QSettings::Format(配置存储格式)分为NativeFormat、IniFormat、InvalidFormat。这里主要讲的是NativeFormat和IniFormat。
    QSettings::NativeFormat:在Windows中,利用系统注册表来存储;在 Mac OS X中,使用系统的CFPreferences机制来存储(使用Core Foundation Preference API);在其他平台中,设置则存储在文本文件中。
    QSettings::IniFormat:读写*.ini格式的配置文件,NativeFormat在某些操作系统中的扩展名是*.conf。

    QSettings::Scope(配置存储范围)分为UserScope、SystemScope。
    QSettings::UserScope:用户环境,设置在当前用户的特定位置中。
    QSettings::SystemScope:系统环境,设置在全局型,所有用户均可获得。

    以下是对应QSettings::Format和QSettings::Scope存放的默认路径位置,其中*表示的是对应的程序名称:

    Platform         Format                      Scope                    Path

    Windows        NativeFormat             UserScope             HKEY_CURRENT_USERSoftware*
                                                         SystemScope         HKEY_LOCAL_MACHINESoftware*
                         IniFormat                  UserScope              %APPDATA%*.ini
                                                         SystemScope         %COMMON_APPDATA%*.ini
    Unix              NativeFormat             UserScope              $HOME/.config/*.conf
                                                         SystemScope         /etc/xdg/*.conf
                         IniFormat                  UserScope              $HOME/.config/*.ini
                                                         SystemScope         /etc/xdg/*.ini
    Mac OS X      NativeFormat             UserScope             $HOME/Library/Preferences/com.*.plist
                                                         SystemScope         /Library/Preferences/com.*.plist
                         IniFormat                  UserScope             $HOME/.config/*.ini
                                                         SystemScope         /etc/xdg/*.ini


    在读写时,路径名必须是"/"而不是"\"等。否则不能读写,注意。

    以Windows XP平台为例,举俩个例子程序~

    ■、读写注册表

    //Format为QSettings::NativeFormat
    QSettings settings("HKEY_CURRENT_USER\Software\Microsoft\Office",
                        QSettings::NativeFormat);
    //设置键值信息
    settings.setValue("11.0/Outlook/Security/DontTrustInstalledFiles", 0);
    //获取键值信息
    int value = settings.value("11.0/Outlook/Security/DontTrustInstalledFiles").toInt();

    对应的值可是bool,double,QString,QStringList,或者是其他QVariant支持的数据类型,也包括注册过的用户自定义类型。
    删除设置对应的是settings->remove( const QString & key );

    ■、读取ini配置文件
    先定义下software.ini文件的格式,比较简单:

    [bolg]
    Name = "vic.MINg"

    //Format为QSettings::IniFormat
    QSettings *setIni=new QSettings ("software", QSettings::IniFormat); 
    //设置键值信息
    setIni->beginGroup("bolg"); 
    setIni->setValue("Name", "vic.MINg"); 
    setIni->endGroup(); 
    //获取键值信息
    setIni->beginGroup("bolg"); 
    QString resault = setIni->value("Name").toString(); 
    setIni->endGroup(); 
    qDebug()<<resault;

    QSetting的应用并不难,但很有用,一些更细致的操作用法,可以参看帮助文档!

    可以参照示例:$QTDIRexamples oolssettingseditor

    http://cool.worm.blog.163.com/blog/static/643390062008426102655150/

  • 相关阅读:
    axios拦截器
    Vue路由守卫
    HTML横向滚动条和文本超出显示三个小圆点
    Vue用户名vuex和localStorage双向存储
    javaScript Es6数组与对象的实例方法
    使用vue实现复选框单选多选
    正则表达式常用字符
    jest函数单元测试
    ts中的类
    ts中接口的用法
  • 原文地址:https://www.cnblogs.com/findumars/p/6250752.html
Copyright © 2011-2022 走看看