QSettings类提供了持久的跨平台应用程序设置。

嗯,一句话概括QSettings……

  • 创建
    来看一下原型:
    QSettings::QSettings(const QString &organization, const QString &application = QString(), QObject *parent = Q_NULLPTR)
    栗子:
QSettings settings("MySoft","App");

第一个参数是公司组织名,而后是程序名。
也可以直接使用QCoreApplication::setOrganizationName()QCoreApplication::setApplicationName()默认组织程序名:

QCoreApplication::setOrganizationName("MySoft");
QCoreApplication::setOrganizationDomain("mysoft.com");
QCoreApplication::setApplicationName("App");
...
QSettings settings;
  • 写值
    1.单纯的对应
settings.setValue("height", 200);

这里便创建了一个height键并赋值为200
(如果存在相同的设置键,现有的值将被新值覆盖。为了提高效率,这些变化可能不会被立即保存到永久存储,可以随时调用sync()来提交更改)
2.前缀

settings.beginGroup("MainWindow");
settings.setValue("height", 200);
settings.setValue("weight", 100);
settings.endGroup();

这里在MainWindow的前缀下便有了值为200的height键和值为100的weight键

  • 读值
    1.单纯的对应
settings.value("height",200);

返回相应值,第一个参数就是所对应的键的名称了,第二个参数则是默认值(也就是说如果没有height的值时,QSettings将会返回一个空QVariant(可转换为整数0),那么这时就可以使用默认值)
2.前缀

settings.beginGroup("MainWindow");
settings.value("height", 200);
settings.value("weight", 100);
settings.endGroup();

同上,同上~

  • 键的操作
    1.获取所有键
    QStringList QSettings::allKeys() const
    无参数,返回一个包含所有键的QStringList(注意 include!)
    来吧,看看官方的Example:
QSettings settings;
settings.setValue("fridge/color", QColor(Qt::white));
settings.setValue("fridge/size", QSize(32, 96));
settings.setValue("sofa", true);
settings.setValue("tv", false);
QStringList keys = settings.allKeys();
// keys: ["fridge/color", "fridge/size", "sofa", "tv"]

2.获取所有子键集
QStringList QSettings::childGroups() const
官方的Example:

QSettings settings;
settings.setValue("fridge/color", QColor(Qt::white));
settings.setValue("fridge/size", QSize(32, 96));
settings.setValue("sofa", true);
settings.setValue("tv", false);
QStringList groups = settings.childGroups();
// groups: ["fridge"]

3.获取所有子键
QStringList QSettings::childKeys() const
Example:

QSettings settings;
settings.setValue("fridge/color", QColor(Qt::white));
settings.setValue("fridge/size", QSize(32, 96));
settings.setValue("sofa", true);
settings.setValue("tv", false);
QStringList keys = settings.childKeys();
// keys: ["sofa", "tv"]

4.判断是否存在指定的键
bool QSettings::contains(const QString & key) const

  1. 删除相关的键
    void QSettings::remove(const QString & key)
    4.删除所有键
    void QSettings::clear()

嗯,终于写完了,自己目前正好要做一个有关QSettings的项目,心里有底了……感觉QSettings的文档里的example是有史以来最多的……

转载于:https://www.cnblogs.com/santiego/p/9461524.html

Qt随笔 - QSettings相关推荐

  1. Qt使用QSettings读写ini文件

    Qt使用QSettings读写ini文件 文章目录 Qt使用QSettings读写ini文件 1. 前言 2. 示例及代码 1. 前言 在项目中有的配置不希望在界面中展示,只提供给实施运维人员来配置, ...

  2. 【Qt】QSettings介绍【转】

    简介 QSettings类提供了持久的跨平台应用程序设置. 用户通常期望应用程序记住它的设置(窗口大小.位置等)所有会话.这些信息通常存储在Windows系统注册表,OS X和iOS的属性列表文件中. ...

  3. qsettings删除注册表_【Qt】QSettings读写注册表、配置文件【转】

    简述 一般情况下,我们在开发软件过程中,都会缓存一些信息到本地,可以使用轻量级数据库sqlite,也可以操作注册表.读写配置文件. 关于QSettings的使用前面已经介绍过了,比较详细,见" ...

  4. Qt之QSettings的使用

    一.前言 软件开发中,有这样的需求:用户需要动态配置参数加载到软件界面,以及保存软件的一些状态值,这就需要将数据保存下来然后读取解析,针对这样的需求,可以有两种方式,一种就是自己定义数据格式,然后像读 ...

  5. QT中QSettings的使用

    首先包含头文件 #include<QSettings> QSettings的使用 QSettings m_iniFile("test.ini", QSettings:: ...

  6. QT中使用QSettings保存应用程序配置信息

    一.问题描述 今天遇到一个问题,就是想实现一个软件,我上一次开启软件时候配置的IP地址以及,打开的文件路径,能够在我下一次打开软件时候自动写入上一次配置的信息,不需要再重新设置配置了. 二.解决方法 ...

  7. 使用qt的qtcore库怎么包含_GitHub - coologic/QtCoreExamples: QtCore模块相关类库范例

    QtCoreExamples QtCore模块相关类库范例 QJsonExample Qt进行Json文件读写范例 QXmlExample Qt使用QXmlStreamReader/QXmlStrea ...

  8. 【QT】将指定ip添加到凭据管理器

    一.前言 写下本文是因为客户提出能不能直接在浏览器里向控制面板中的凭据管理器添加指定IP的功能. 在中文引擎搜索了很久没发现相关的资料记录,最后在 stackoverflow上搜索到了相关解决方案,不 ...

  9. Windows 使用QT读取IP地址并修改IP地址

    读取Windows的IP地址有三种方法: QT的QNetworkInterface IPHlpApi QT的QSettings读注册表 修改windows的IP地址使用 netsh netsh int ...

最新文章

  1. 将php数组存取到本地文件
  2. python中循环结构分有,python常见循环结构有哪些
  3. Android 禁止更换桌面,Android中如何禁用其他应用,并且不在桌面显示
  4. 岗位推荐 | 微软AI Research Group招聘自然语言处理AI算法研究实习生
  5. java.sql.SQLSyntaxErrorException: Unknown database ‘spring‘
  6. 后端开发:数据持久化框架为什么放弃Hibernate、JPA、Mybatis,最终选择JDBCTemplate!...
  7. Git之添加公钥之后git clone ****提示sign_and_send_pubkey: signing failed: agent refused operation
  8. 【CodeForces - 574C】Bear and Poker(思维,剪枝,数学)
  9. Go1.18 新特性:多 Module 工作区模式
  10. 一文带你认识队列数据结构
  11. 新修订未成年人保护法6月1日正式实施
  12. mongodb多条件查询
  13. 布丰投针试验的仿真和误差估计
  14. LaTeX函数、符号及特殊字符
  15. linux系统可以用autocad吗,还在找适用于Linux系统的CAD软件?这5款千万别错过!
  16. 灵雀云 CTO 陈恺:从“鸿沟理论”看云原生,哪些技术能够跨越鸿沟?
  17. 离散数学:快速又准确地求解主合取范式和主析取范式 (配凑大法好)
  18. APP+spring boot校园购物网站 毕业设计-附源码041037
  19. Nvidia30系显卡+Ubuntu系统的CUDA 11安装100%成功教程
  20. 中心性算法的简单总结

热门文章

  1. 企业上市上市央企大面积亏损折射出啥弊端?
  2. 使用.NET为Window Mobile写自动化工具的无奈之处.
  3. 最近总结——关于自己的基础问题
  4. java中的多线程来看一看基础了
  5. 动态图连通性(线段树分治+按秩合并并查集)
  6. 异步简析之BlockingCollection实现生产消费模式
  7. 编辑器Ultraedit快捷键
  8. 增量式编码器定时器配置和速度计算的处理方法
  9. vue keep-alive缓存页面切换后不触发created等用什么检测页面切换
  10. [React] 尚硅谷 -- 学习笔记(六)