Qt-QSettings的思考

功能作用:

能够提供持久的平台无关的应用配置,主要有两方面内容:

1.持久存储应用的配置,例如窗体信息、位置、用户登录时的账号等等,window下可以选择存储在注册表或者ini文件中。

2.平台无关性,就是说开发者不需要担心不同平台的存储问题,底层会根据不同操作系统存储适当位置。

简单使用:

a.写入注册表:

void MainWindow::writeSettings()
{
    //可以将settings对象设置为单例,避免每次使用时都要创建相同参数的对象
    //Moose Soft:   公司名称
    //QSettingsTest:程序名称
    QSettings settings("Moose Soft", "QSettingsTest");

    settings.setValue("editor",68);
    QColor color(123,44,33);
    settings.setValue("color",color);
    //如果程序存在多个界面、逻辑组,则可以使用beginGroup来区分不同组的数据
    settings.beginGroup("mainwindowInfo");
    settings.setValue("window/size",size());
    settings.setValue("window/point",this->pos());
    settings.endGroup();
}

开发者可以在需要保存配置的时候调用写操作,将配置保存于注册表中(ini文件也行),如果想知道存储在哪里可以调用成员函数fileName(),然后通过window搜索注册表:

打开后根据调用fileName()函数的字符串信息进行查找:存储结构如下:

b.读取注册表中的信息:

void MainWindow::readSettings()
{
    QSettings settings("Moose Soft", "QSettingsTest");
    settings.beginGroup("mainwindowInfo");
    QSize size = settings.value("window/size").toSize();
    resize(size);
    QPoint point= settings.value("window/point").toPoint();
    qDebug()<<settings.fileName();
    move(point);
    settings.endGroup();
}

应用规范:

以上代码是一些测试函数,因此没有考虑实际的代码规范等,使用的时候主要注意的点有:

1.QSettings对象单例化,避免重复创建

2.存储的value字符串统一写在一个命名空间里,并定义在cpp文件中,声明在头文件中:

//***.cpp
const QString MainWindowInfo = QStringLiteral("mainWidnowInfo");   
...


//***.h
extern QString MainWindowInfo;
...

一点思考:

QSettings属于工具类的东西,我觉得没有必要非得去记住它,如果查阅它的文档时会发现里面有各种各样的函数,记住了也没有什么意义,如果非要记,应该首先记住它的作用,然后记住它的基本用法,心里有个大概的概念,最后可以尝试去查阅它的源码,记住它实现的思想。轮子没有必要重复造,上次有人问我connect的两种用法以及第五个参数ConnectionType的区别,额。。我也是一脸懵逼,因为之前有注意过但确实是没有深入的去看,拿一把枪只知道扣扳机,不知道枪口的位置,容易误伤自己,因此在用到一个东西的时候首先你得明白它的作用到底是什么,有什么注意的事项,这样在出一些问题的时候你就能够大概推测问题所在。同时等了解它的所有功能了,再去思考是否去挖掘更深的东西,如底层实现,周边拓展技术等等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值