Qt开发的应用记录读取用户习惯设置的方法

admin 2022年6月27日08:10:05安全开发评论3 views2521字阅读8分24秒阅读模式
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:
https://blog.csdn.net/wokaowokaowokao12345/article/details/78409385
本文转载自以上博客,侵删
在软件的使用过程中,有些用户有特定的习惯,如:窗口大小、参数设置、文件打开的方式等。当下次启动软件时候,用户往往希望设置和上次的一样,因此我们需要有一个文件来保存用户的一些偏好信息,在程序重新启动的时候再进行偏好设置。当然我们可以自己记录并保存用户的习惯,下次启动应用的时候读取就好。
但是,Qt给开发者提供了QSetting类。允许开发者创建一个配置文件或者操作注册表,还可以指定配置文件的位置和下次读取,恢复用户的上次设置。

QSetting类

QSetting是一个平台无关的可以设置和读取应用程序设置的类。由于笔者是在windows环境下做软件开发,所以这个博客中的例子以windows平台进行测试。

初始化

使用之前先导入库

#include

在创建QSetting对象时,应该把公司或组织,还有应用程序的名字传递给构造函数,例如,如果应用程序叫做Star Runner,公司叫做MySoft,那么应该像下面这样构造对象

QSettings settings("MySoft","Star Runner");

键(key)和值(value)

QSetting由键和值组成,使用QString指定键(key)的名字,使用QVariant来存储和键相关联的值。使用setValue(),设定值。例如:
settings.setValue(“editor/warpMargin”,68);
如果已经存在了同名的键,那么新的值会覆盖原来的值,使用value()函数获取setting的值。例如:
int margin=settings.value(“editor/warpMargin”).toInt();
如果没有指定的key,那么value()会返回一个Null QVariant,也可以为value()指定一个缺省的值,例如:
int margin=settings.value(“editor/warpMargin,80).toInt();
缺省值就是80,value() 返回的值是一个QVariant,把他转换成int类型。

QSetting 分隔符

使用“/”作为分隔符,而不是“”。例如:
settings.setValue("mainwindow/size", win->size());settings.setValue("mainwindow/fullScreen", win->isFullScreen());settings.setValue("outputpanel/visible", panel->isVisible());settings.endGroup();

应用程序状态的保存与读取

在关闭应用程序时候保存应用程序窗口的大小和位置,在再次打开应用程序时候,读取出来。
保存:
void MainWindow::writeSettings() {     QSettings settings("Moose Soft", "Clipper");
settings.beginGroup("MainWindow"); settings.setValue("size", size()); settings.setValue("pos", pos()); settings.endGroup(); }
读取:
 void MainWindow::readSettings() {     QSettings settings("Moose Soft", "Clipper");
settings.beginGroup("MainWindow"); resize(settings.value("size", QSize(400, 400)).toSize()); move(settings.value("pos", QPoint(200, 200)).toPoint()); settings.endGroup(); }


在构造函数中调用readSetting(),在关闭窗口事件中调用writeSettings()
MainWindow::MainWindow() {     ...     readSettings(); } void MainWindow::closeEvent(QCloseEvent *event) {     if (userReallyWantsToQuit()) {         writeSettings();         event->accept();     } else {         event->ignore();     } }

清空所有记录

settings.clear();


建议

在保存默认设置的时候,建议添加默认值,如果未添加软件在第一次运行时,参数等设置全部混乱!
默认参数设置如下。
ui.radioButtonC1->setChecked(settings.value("radioButtonC1", false).toBool());ui.lineEditZDName->setText(settings.value("lineEditZDName", "ZD").toString());ui.checkBoxZD->setChecked(settings.value("checkBoxZD", true).toBool());ui.timeEditStart->setTime(settings.value("timeEditStart", QTime(8, 35, 06)).toTime());ui.spinBoxTimeLable->setValue(settings.value("spinBoxTimeLable", 1).toInt());

Qt开发的应用记录读取用户习惯设置的方法

参考
http://blog.chinaunix.net/uid-11765716-id-3181163.html
http://blog.csdn.net/u011512437/article/details/43927321

原文始发于微信公众号(汇编语言):Qt开发的应用记录读取用户习惯设置的方法

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月27日08:10:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  Qt开发的应用记录读取用户习惯设置的方法 http://cn-sec.com/archives/1145310.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: