QSettings类详解

来源:互联网 发布:php md5加密后的长度 编辑:程序博客网 时间:2024/04/29 14:32

Qt4.0中又增加了一个非常有用的类QSettings,这个类是Qt4提供的一个读取配置文件的类,在Windows平台上,它提供了ini文件的读写,以及注册表的读写功能。我们都知道,用户对于应用程序经常有某种需要,比如说:窗体的大小,出现的位置,以及最近打开的文件等等,而这些需求均可由QSettings类实现。

一般来说settings都存放在系统之中,在windows操作系统下一般都是ini加密文件中或者是系统的注册表中,而对于mac系统来说,一般存放在XML文件中,下面我们就来看看它的具体用法。
读过《C++ GUI Programming with Qt 4, Second Edition》这本书的人应该都遇到过这个疑问,我们先来看看它的构造函数吧:
  1. QSettings ( const QString & organization, const QString & application = QString(), QObject * parent = 0 )
  2. QSettings ( Scope scope, const QString & organization, const QString & application = QString(), QObject * parent = 0 )
  3. QSettings ( Format format, Scope scope, const QString & organization, const QString & application = QString(), QObject * parent = 0 )
  4. QSettings ( const QString & fileName, Format format, QObject * parent = 0 )
  5. QSettings ( QObject * parent = 0)
当我们创建一个QSettings的对象时,一般需要传递两个参数,第一个是公司或者组织的名称,第二个是应用程序的名称,我们以例子来说明问题:
  1. QSettings settings("Yzs_think", "Application");
公司或组织名称:Yzs_think, 程序名称:Application
下面就要对其值进行设置(一般用法):
1、写入数据:
  1. QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();
  2. QSize size = settings.value("size", QSize(400, 400)).toSize();
  3. resize(size);
  4. move(pos);
第一句是设置窗口出现的位置坐标,第二句实现了对窗口大小的设置,第三局和第四句如果 settings 里有以前存下的 ( 用 setValue 设置的 )pos 和 size 的值,则读取,如果没有,不会返回 null ,而会使用我们给它的起始值—— default value ——即应用程序第一次运行时的情况。
2、读出信息数据
  1. QSettings settings("Yzs_think", "Application");
  2. settings.setValue("pos", pos());
  3. settings.setValue("size", size());
这里值得注意的是写数据和读数据的时候的公司名称与应用程序名称必须一样,否则无法正常读取。
下面我们以一段具体的程序来说明问题:
  1. void MainWindow::readSettings()
  2. {
  3. QSettings settings("Yzs_think", "Application");
  4. QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint();
  5. QSize size = settings.value("size", QSize(400, 400)).toSize();
  6. resize(size);
  7. move(pos);
  8. }
  9. void MainWindow::writeSettings()
  10. {
  11. QSettings settings("Yzs_think", "Application");
  12. settings.setValue("pos", pos());
  13. settings.setValue("size", size());
  14. }
而后在我们的程序中,每次重新打开应用程序时,其窗口大小和位置都是上一次关闭之前的位置。

本文出自 “驿落黄昏” 博客,请务必保留此出处http://yiluohuanghun.blog.51cto.com/3407300/952807

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 战地1停止工作怎么办 大写锁定shift解除怎么办 游戏突然掉帧怎么办 oppo应用商店打不开怎么办 ps4战地1校园网怎么办 战地4延迟高怎么办 红米手机打不开怎么办 台式电脑网页打不开怎么办 电脑网页很多都打不开怎么办 qq发送不了位置怎么办 qq无法找到入口怎么办 玩游戏总是掉怎么办 ipad所有按键失灵怎么办 手机启动器停止运行怎么办 安卓版泰拉瑞亚联机失去连接怎么办 吃鸡安装不了怎么办 obb文件丢失了怎么办 dnf登录闪退怎么办 泰拉瑞亚地图找不到备份怎么办 服务器没远程管理卡怎么办 tplink上不了网怎么办 键盘端口坏了怎么办 小米路由dns错误怎么办 电脑内存性能低怎么办 nas硬盘坏了怎么办 360安装环境异常怎么办 连接不上服务器怎么办 路由器被绑定mac怎么办 mac地址绑定失败怎么办 触摸屏忘了密码怎么办? 小区高层水压低怎么办 高层楼房水压不够怎么办 热水器温度太高怎么办 热水器出热水小怎么办 天然气热水器水压不够怎么办 热水器水变小了怎么办 液压齿轮泵没力怎么办 gps总是浮点解怎么办 电源要做到稳压怎么办 变压器输出电压低怎么办 变压器输出电压高怎么办