在实际应用中,常常需要应用程序能保存程序的状态以及用户的设置,如应用程序显示的大小、位置、背景颜色或用户设置参数等信息,以便下次运行程序时,能保持上次关闭的状态。

Qt提供的QSettings类能很方便地实现保存程序设置的需求。当创始一个QSettings对象时,必须传递公司名或组织名以及应用程序名称,如下所示:

QSettingssettings("MySoft", "Star Runner");

如果在应用程序的多个地方用到QSettings,可以使用QCoreApplication::setOrganizationName()和QCoreApplication::setApplicationName()来指定组织名和应用程序名。这样,就可以使用QSettings的默认构造函数了。如下所示:

QCoreApplication::setOrganizationName("MySoft");

QCoreApplication::setOrganizationDomain("mysoft.com");

QCoreApplication::setApplicationName("StarRunner");

...

QSettingssettings;

保存一个设置方法如下:

settings.setValue("editor/wrapMargin",68);

它指定了一个设置的键(QString)和一个与之关联的数据(QVariant)。

读取一个设置的方法如下:

intmargin = settings.value("editor/wrapMargin").toInt();

上述语句将返回与键关联的数据,如果没有与该键关联的数据,则返回值为空。

intmargin = settings.value("editor/wrapMargin", 80).toInt();

上述语句提供了一个默认值,即当没有与键关联的数据时,返回默认值。

关于段和键的语法

可以构造层次化的键值,使用’/’作为分隔符,类似于Unix文件路径,如:

settings.setValue("mainwindow/size",win->size());

settings.setValue("mainwindow/fullScreen",win->isFullScreen());

settings.setValue("outputpanel/visible",panel->isVisible());

如果保存或恢复的设置的键值拥有相同的前缀,那么可以使用beginGroup()和endGroup(),代码如下所示:

settings.beginGroup("mainwindow");

settings.setValue("size",win->size());

settings.setValue("fullScreen",win->isFullScreen());

settings.endGroup();

settings.beginGroup("outputpanel");

settings.setValue("visible",panel->isVisible());

settings.endGroup();

转载于:https://my.oschina.net/fuyajun1983cn/blog/263879

保存和恢复应用程序状态相关推荐

  1. TensorFlow2 -官方教程 :保存和恢复模型

    文章目录 准备工作:安装,导入,获取数据集,定义model 在训练期间保存模型(以 checkpoints 形式保存) Checkpoint 回调用法 checkpoint 回调选项 这些文件是什么? ...

  2. Tensorflow |(5)模型保存与恢复、自定义命令行参数

    Tensorflow |(1)初识Tensorflow Tensorflow |(2)张量的阶和数据类型及张量操作 Tensorflow |(3)变量的的创建.初始化.保存和加载 Tensorflow ...

  3. 简单完整地讲解tensorflow模型的保存和恢复

    http://blog.csdn.net/liangyihuai/article/details/78515913 在本教程主要讲到: 1. 什么是Tensorflow模型? 2. 如何保存Tenso ...

  4. Tensorflow【实战Google深度学习框架】TensorFlow模型的保存与恢复加载

    我们使用TensorFlow进行模型的训练,训练好的模型需要保存,预测阶段我们需要将模型进行加载还原使用,这就涉及TensorFlow模型的保存与恢复加载. 总结一下Tensorflow常用的模型保存 ...

  5. Android Fragment使用(三) Activity, Fragment, WebView的状态保存和恢复

    Android中的状态保存和恢复 Android中的状态保存和恢复, 包括Activity和Fragment以及其中View的状态处理. Activity的状态除了其中的View和Fragment的状 ...

  6. 任务切换的基础:模拟任务切换时寄存器的保存与恢复

    文章目录 1 任务切换的基础:模拟任务切换时寄存器的保存与恢复 1 任务切换的基础:模拟任务切换时寄存器的保存与恢复 需求说明:使用PendSVC触发异常,在异常处理函数中,保存R4-R11寄存器到缓 ...

  7. 深度学习小技巧(二):如何保存和恢复scikit-learn训练的模型

    深度学习小技巧(一):如何保存和恢复TensorFlow训练的模型 在许多情况下,在使用scikit学习库的同时,你需要将预测模型保存到文件中,然后在使用它们的时候还原它们,以便重复使用以前的工作.比 ...

  8. [architecture]-ARMV7架构下SecureMonitor双系统切换时保存和恢复哪些寄存

    ★★★ 个人博客导读首页-点击此处 ★★★ . 文章目录 1.armv7的通用寄存器简介 2.寄存器的保存和恢复 3.参考代码: 1.armv7的通用寄存器简介 ARMV7处理器有40个32位寄存器, ...

  9. [architecture]-ARMV7架构下Linux Kernel的Userspace进程切换时保存和恢复哪些寄存器

    ★★★ 个人博客导读首页-点击此处 ★★★ . 文章目录 1.armv7的通用寄存器简介 2.寄存器的保存和恢复 3.Linux Kernel参考代码 1.armv7的通用寄存器简介 ARMV7处理器 ...

最新文章

  1. HTML(六)——表单验证、正则表达式、事件
  2. free malloc
  3. C++相关:部分标准库特殊设施
  4. VS2005 there is no source code available for the current location 解决方案
  5. 微信获取位置 转化为 高德地图 位置 地址
  6. 一只猫引发的互联网争论
  7. 【今日CV 视觉论文速览】16 Nov 2018
  8. 任意线段集生成多边形_self-attention缺失文本生成||Text Infilling
  9. python类:class创建、数据方法属性及访问控制(下划线)
  10. linux 内核移植(七)――rest_init函数分析
  11. 小程序普通二维码配置
  12. 标志设计|标识设计|商标设计|logo设计|的起源
  13. GRPC Connection Backoff Protocol
  14. 今日网易邮箱126无法访问
  15. 网易云音乐实时计算平台设计及实践
  16. GameofMir引擎架设传奇服务器【2:登录器配置】
  17. xAd:南京大学大二学生开发的视频内广告动态植入技术
  18. 在ROS Kinetic和Gazebo 8中使用智能汽车仿真演示
  19. 以太坊合并 你需要熟悉的两个PoS概念
  20. it创客_创客是新的工业革命

热门文章

  1. .NET 权限笔记-Attribute+Reflect+Remoting
  2. .NET与java的MVC模式(3):ASP.NET 页生命周期概述
  3. 贝塞尔曲线 花束直播点赞效果
  4. UbuntuでPostgreSQLをインストールからリモートアクセスまでの手順
  5. liunx内核编译安装
  6. 3——PHP 简单运算符的使用
  7. django 模板里面for循环常用的方法
  8. iOS开发那些事-平铺导航–基于分屏导航及案例实现
  9. 有关弹窗页面的注意问题
  10. 狂风暴雨——电闪雷鸣篇:数据流层核心思想揭秘