Qt开发的应用记录读取用户习惯设置的方法
2017-10-31 23:23
274 查看
Qt开发的应用记录读取用户习惯设置的方法
在软件的使用过程中,有些用户有特定的习惯,如:窗口大小、参数设置、文件打开的方式等。当下次启动软件时候,用户往往希望设置和上次的一样,因此我们需要有一个文件来保存用户的一些偏好信息,在程序重新启动的时候再进行偏好设置。当然我们可以自己记录并保存用户的习惯,下次启动应用的时候读取就好。但是,Qt给开发者提供了QSetting类。允许开发者创建一个配置文件或者操作注册表,还可以指定配置文件的位置和下次读取,恢复用户的上次设置。QSetting类
QSetting是一个平台无关的可以设置和读取应用程序设置的类。由于笔者是在windows环境下做软件开发,所以这个博客中的例子以windows平台进行测试。初始化
在创建QSetting对象时,应该把公司或组织,还有应用程序的名字传递给构造函数,例如,如果应用程序叫做Star Runner,公司叫做MySoft,那么应该像下面这样构造对象QSetting settings("MySoft","Star Runner");
键key和值value
QSetting有键和值组成,使用QString指定键key的名字,使用QVariant来存储和key相关联的值。使用setValue(),设定key。例如:setting.setValue(“editor/warpMargin”,68);
如果已经存在了同名的key,那么新的值会覆盖原来的值,使用value()函数获取setting的值。例如:
int margin=setting.value(“editor/warpMargin”).toInt();
如果没有指定的key,那么value()会返回一个Null QVariant,也可以为value()指定一个缺省的值,例如:
int margin=setting.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());
如果想设置子目录,也可以使用beginGroup()和endGroup()配合使用,如下
settings.beginGroup("mainwindow"); settings.setValue("size", win->size()); settings.setValue("fullScreen", win->isFullScreen()); 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());
参考
http://blog.chinaunix.net/uid-11765716-id-3181163.html
http://blog.csdn.net/u011512437/article/details/43927321
相关文章推荐
- IOS应用开发中的tips - MKMapView之设置地图以用户当前位置为中心
- WEB服务器应用_服务器安全设置之_IIS用户设置方法
- iOS应用开发中UIView添加边框颜色及设置圆角边框的方法
- 基于Android的短信应用开发(五)——读取显示会话信息记录
- iOS开发——判断用户是否开启了应用推送设置
- 以前从来没有写东西的习惯,从今天开始,把自己开发中遇到的问题及解决方法和心得记录下来!
- 保存、方法-Android文件存储--采用SharedPreferences保存用户偏好设置参数和读取设置参数-by小雨
- Qt嵌入式开发避免窗口闪烁以及窗口模态设置方法
- [置顶] Android开发之设置应用设置全屏的两种解决方法 兼容android5.0等两种解决方法
- 一种用户操作日志信息的记录及读取方法
- 关于Qt开发的windows平台的应用发布的方法
- qt中数据存储方法(接口)的思路应用1(thinkvd开发日志)
- android应用开发中收集的异常日志解决方法记录
- 记录一些自己的开发习惯,Chrome插件、studio插件及设置格式迁移
- Windows应用商店应用开发之读取XML文件方法
- 工作日志记录:关于脉脉这款应用的默认用户头像的一种实现方法
- win8应用商店程序开发-保存/读取本地应用程序设置
- Android开发之设置应用设置全屏的两种解决方法 兼容android5.0等两种解决方法
- 一种基于自定义代码记录用户访问日志在Sharepoint网站的应用方法!
- 一种基于自定义代码记录用户访问日志在Sharepoint网站的应用方法!