QSettings 类

一 、QSettings介绍:

用户通常希望应用程序记住其设置。在windows中,这些设置保存在注册表中,ios在属性文件列表中,而unix,在缺乏标准的情况下,其存储在ini文本中。QSettings有两种存储格式:QSettings::NativeFormat(在windows平台可读写注册表)、QSettings::IniFormat(读写ini文件)、QSettings::InvalidFormat

QSettings使用户可以保存应用程序设置,并且支持用户自定义存储格式。QSetings API基于QVariant,因而你可以存储却大部分类型的数据。如果你需要一个非持久性的存储,推荐使用QMap<QString,QVariant>.


二、QSettings常用API:

  • 创建QSettings对象
  1. QSettings(const QString & organization, const QString & application = QString(), QObject * parent = 0)

创建一个QSettings对象,必须传入应用程序名称,及公司名称。如果你的设置来自程序中不同的地方,你需要通过QCoreApplication::setOrganizationName() and QCoreApplication::setApplicationName()指定程序名称和公司名称,并且使用默认的构造函数QSettings settings。

QCoreApplication::setOrganizationName("MySoft");

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

QCoreApplication::setApplicationName("Star Runner");

...

QSettings settings;

  • 写入数据
  1. settings.setValue("editor/wrapMargin", 68);

每一条信息包含一个key和一个value,value类型为QVariant。

  • 读取数据
  1. int margin = settings.value("editor/wrapMargin").toInt();

如果key不存在,则返回 null QVariant(可以被转化为整数0)

读取数据的时候,可以传递第二个参数,给定新的value:

  1. int margin = settings.value("editor/wrapMargin", 80).toInt();
  • 其他

判断key是否存在: contains(const QString & key) const

移除某项:remove(const QString & key)

得到所有键:QStringList QSettings::allKeys()



三、使用示例

  • 读写注册表

实例化对象时,设置存储格式为:QSettings::NativeFormat,利用‘/‘来填写要读写的注册表:

  1. QSetings settings(("HKEY_CURRENT_USER/", QSettings::NativeFormat);
  2. settings.setValue("regedit/test","green");//设置key-value键值对
  3. QString value = settings.value("regedit/test");//读取key对应的value
  • 读写ini文件
  1. #include <QApplication>
  2. #include <QSettings>
  3. int main(int argc, char *argv[])
  4. {
  5. QApplication a(argc, argv);
  6. QSettings settings("E:/QTProject/BLOG/Settings_test/test.ini", QSettings::IniFormat);
  7. settings.setValue("Student/name", "ChengKeKe");
  8. settings.setValue("Student/sex", "man");
  9. settings.setValue("Student/age", 24);
  10. settings.setValue("Address", "Xi‘an");
  11. QString name = settings.value("Student/name").toString();
  12. QString sex = settings.value("Student/sex").toString();
  13. return a.exec();
  14. }

打开test.ini如图:


  注: 其中注意读取Value时,如果存储值为16进制,不能使用int QVariant::toInt(bool * ok = 0) const,结果将返回0;

来自为知笔记(Wiz)

时间: 2024-08-30 06:32:50

QSettings 类的相关文章

保存应用程序设置(QSettings)

保存应用程序设置(QSettings) 1.   QSettings 类 QSettings 提供保存应用程序当前设置的接口,可以方便地保存程序的状态,例如窗口大小和位置,选项的选中状态等等. 在 Windows 系统中,程序程序的状态信息记录在注册表中:在 Mac OS X 系统上,这些信息记录在 XML 配置文件中:在 Unix 系统中,则使用 INI text 文件记录.QSettings 则是对这些技术的一个抽象,使得保存和取得应用程序的设置状态的只得独立于操作系统. QSettings

QSettings的使用

QSettings类是Qt中跨平台的配置信息类,在Application关闭时可以保存必要的数据信息:在程序启动时读取数据,恢复用户设置.在此,做一个小例子来测试其基本使用. QSettingsDialog即录入用户数据,并且处理数据. ui文件: <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0">  <class>QSettingsDialog&

Qt读写三种文件,QSettings读ini配置文件,QJsonDocument读JSON文件,QDomDocument读xml文件

第一种INI配置文件 .ini 文件是Initialization File的缩写,即初始化文件. 除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求.一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能.它可以用来存放软件信息,注册表信息等. 读INI文件 INI文件内容如下: [conn] ip=127.0.0.1 port=8080 databaseversion=QSQLITE databasename=st

常见的几个Qt编程问题的处理(转自QT中文论坛)(挺实用的)

1.如何在窗体关闭前自行判断是否可关闭答:重新实现这个窗体的closeEvent()函数,加入判断操作 void MainWindow::closeEvent(QCloseEvent*event){if (maybeSave()){writeSettings();event->accept();}else{event->ignore();}} 2.如何用打开和保存文件对话答:使用QFileDialog QString fileName = QFileDialog::getOpenFileNam

QT 全貌一栏

QT QT使创建独立于平台的数据库应用成为可能. QT的内建驱动支持Oracle,Microsoft SQL Server,Sybase Adaptive Server,IBM DB2,PostgreSQL,MySQL,BorlandInterbase,SQLite,以及各种ODBC的数据库.QT的数据库功能完全集成到了QT设计器中,能提供数据库的生动的预览.QT包括专门的数据库组件,并且任何内建的或自定义的组件都可以数据相关: QT普遍使用Unicode并且有良好的国际化支持.QT包括QT L

Qt学习

QPushButton类:http://blog.csdn.net/xgbing/article/details/7762474 QPixmap类:http://blog.csdn.net/hmsiwtv/article/details/7560791 QT按钮上面加图片:http://blog.chinaunix.net/uid-25808509-id-1746294.html QSettings类的使用:http://blog.csdn.net/lanmanck/article/detail

QML 读取本地文件内容

QML 对本地文件的读写 QML 里似乎没有提供直接访问本地文件的模块,但是我们能够自己扩展 QML,给它加上访问本地文件的能力. Qt 官方文档对 QML 是这样介绍的: It defines and implements the language and engine infrastructure, and provides an API to enable application developers to extend the QML language with custom types

QSetting介绍

简介 QSettings类提供了持久的跨平台应用程序设置. 用户通常期望应用程序记住它的设置(窗口大小.位置等)所有会话.这些信息通常存储在Windows系统注册表,OS X和iOS的属性列表文件中.在Unix系统中,在缺乏标准的情况下,许多应用程序(包括KDE应用程序)使用INI文本文件. QSettings围绕这些抽象技术,使我们能够以便携的方式保存和恢复应用程序设置.它还支持自定义存储格式. QSettings API基于QVariant,可以保存很多基础的类型,比如 QString.QR

QT开发(二十七)——QT常用类(一)

QT开发(二十七)--QT常用类(一) 一.QString 1.QString简介 QString提供了Unicode编码的字符串,使用隐式共享技术来节省内存和不必要的数据拷贝,不必考虑跨平台的兼容性. QString类成员函数中除了 ascii().latin1().utf8().local8Bit()函数,其他所有的函数都是可重入的. 2.QString成员函数 QString::QString ( const QChar * unicode, int size ) QString::QSt