在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_USER\Software\*
                                                     SystemScope         HKEY_LOCAL_MACHINE\Software\*
                     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的应用并不难,但很有用,一些更细致的操作用法,可以参看帮助文档!

可以参照示例:$QTDIR\examples\tools\settingseditor

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

Qt配置信息设置(QSettings在不同平台下的使用路径)的更多相关文章

  1. mybatis一(常用配置信息和获取插入后id)

    <!--配置文件--><?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE conf ...

  2. udhcp源码详解(三)上 之配置信息的读取

    上节介绍了存储管理配置信息的结构体struct server_config_t,该结构体贯穿整个server端程序的运行. 在dhcpd.c里的用该结构体定义个一个全局的变量: struct serv ...

  3. .NET平台下开源框架

    一.AOP框架Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面(asp ...

  4. QT全平台设置图标,全平台静态编译 good

    1.  概述 当我们用QT写好了一个软件,要把你的程序分享出去的时候,不可能把编译的目录拷贝给别人去运行.编译好的程序应该是一个主程序,加一些资源文件,再加一些动态链接库,高大上一些的还可以做一个安装 ...

  5. Unity3d平台信息设置

    [Unity3d平台信息设置] 通过"Edit" -> "Project Settings" -> "Player"菜单选项.打 ...

  6. [Xcode 实际操作]九、实用进阶-(8)实现App的Setting设置:添加和读取程序的配置信息

    目录:[Swift]Xcode实际操作 本文将演示如何实现添加和读取程序的配置信息. 在项目文件夹[DemoApp]上点击鼠标右键->[New File]创建一个设置束文件 ->[Sett ...

  7. 设置Webdriver启动chrome为默认用户的配置信息

    Webdriver 启动Chrome浏览器时,默认是打开一个新用户,而非默认用户.即新用户没有我们安装扩展程序.但在实际应用中,我们会须要 默认用户安装的一些扩展程序,比方对于某些js或者css样式. ...

  8. thinkphp中配置信息的二维数组设置与使用

    有时候配置信息是二维数组 1.配置 <?php return array ( // 阿里大鱼短信配置 'dayu_appkey'=>'xxx', 'dayu_secretKey'=> ...

  9. Eclipse+Qt开发环境设置(Linux和Win)

    文章摘要: Windows,Linux平台下安装使用Eclipse + QT4.4.3开发环境 Windows,Linux新建project时的配置(不使用QT预置项目类型,而是手工配置) 使用Ecl ...

随机推荐

  1. Unicode编码

    Unicode为世界上所有的文字系统的每一个字符单位分配了一个唯一的整数,称为代码点,范围为:0~1114111: ASCII将每一索引映射为唯一的二进制表示,但Unicode允许多个不同二进制编码的 ...

  2. python IDLE 改变窗口背景颜色

    初学Python,想必大家拿来练习最多的IDE就是Python自带的IDLE了,但是默认的代码配色及语法高亮主题确实很不适应. 能不能把IDLE配置成像sublime_text那样的主题呢? 答案是当 ...

  3. BZOJ4299 : Codechef FRBSUM

    若$[0,i]$的数都可以得到,那么$[1,所有不大于i+1的数的和]$的数都可以得到. 如此暴力枚举答案,用可持久化线段树支持查询,因为每次数字至少翻一倍,所以复杂度为$O(m\log^2n)$. ...

  4. Photoshop: 机关单位公章

    机关单位公章的大小与机构的级别有关,级别越高的公章越大,一般直径在3.8-4.2cm,很少有用4.5cm或3.4cm的.但企业的公章一般都很大. 首先点击文件新建,新建一个500×500像素(像素大小 ...

  5. 在桌面chrome中调试android设备中的web页面

    准备工作 1, 桌面版chrome 2, Android设备(安装有chrome浏览器) 3, Android-sdk Android-sdk安装及设置 SKD安装 从http://developer ...

  6. oracle系列--第四篇 Oracle的卸载

    对于oracle的卸载,是一件相对麻烦的事情,不像其他软件那样,我们可以根据卸载向导,就可以方便快捷地卸载软件. oracle的卸载,我们要涉及到修改注册表,重启计算机等操作. 我们有些时候有必要卸载 ...

  7. Graph database_neo4j 底层存储结构分析(4)

    3.3.2   DynamicStore 类型 3.3.2.1        AbstractDynamicStore 的存储格式 neo4j 中对于字符串等变长值的保存策略是用一组定长的 block ...

  8. shell if判断语句

    测试脚本是否有语法错误: sh  -n  脚本名 一.if语句: 二.逻辑运算解析: -f  判断文件是否存在 -d 判断目录是否存在 -eq 判断是否相等 -ne 判断是否不相等 -lt 小于 -g ...

  9. Win2K3一句话开3389

    网上流传了很多开3389的exe小工具,还有读写注册表的bat批处理,有的是操作注册表,有的是操作各种组件这里提供一个不会被拦截,而且可以使用的开3389的cmd一句话: wmic RDTOGGLE  ...

  10. 浅谈WPF页间导航

    浅谈WPF页间导航 使用导航的目的是从一个页面进入到另一个页面.无论是预先决定的线性顺序(向导)还是基于层次的用户驱动程序(大部分网站的形式),或者动态生成的路径,主要有3种方法实现:调用Naviga ...