Qt--QSettings
在qt.conf一节中我们知道qt.conf是一个ini格式文件,Qt内部使用QSettings这个类来解析和保存qt.conf中的配置。
先来看一个QSettings的使用范例:
#include
#include
#include
int main(int argc, char* argv[]){QCoreApplication app(argc, argv);QString filepath = QCoreApplication::applicationDirPath() + "/test.ini";QSettings writer(filepath, QSettings::IniFormat);writer.beginGroup("UI");writer.setValue("x", "0");writer.setValue("y", "0");writer.setValue("w", "1280");writer.setValue("h", "720");writer.endGroup();writer.beginGroup("HTTP");writer.setValue("ip", "127.0.0.1");writer.setValue("port", "80");writer.endGroup();QSettings reader(filepath, QSettings::IniFormat);reader.beginGroup("UI");qDebug() << reader.value("x");qDebug() << reader.value("y");qDebug() << reader.value("w");qDebug() << reader.value("h");reader.endGroup();reader.beginGroup("HTTP");qDebug() << reader.value("ip");qDebug() << reader.value("port");reader.endGroup();// qDebug() << reader.value("UI/x");
// qDebug() << reader.value("UI/y");
// qDebug() << reader.value("UI/w");
// qDebug() << reader.value("UI/h");return 0;
}
编译运行程序后,在应用程序所在目录生成了test.ini文件,文件内容如下:
[UI]
x=0
y=0
w=1280
h=720[HTTP]
ip=127.0.0.1
port=80
这就是一个典型的ini格式文件,形式如
[section]
key=value
在QSettings的使用上,我们可以这么写
set.beginGroup("section");
set.setValue("key", "value");
QString value = set.value("key").toString();
set.endGroup();
也可以这么写:
set.setValue("section/key", "value");
QString value = set.value("section/key").toString();
除了IniFormat格式外,还有一种NativeFormat本地格式,不同的操作系统默认的NativeFormat不同,在windows下默认为注册表,linux下其实就是ini文件,只是扩展名是.conf。
在QSettings的源码中,实际靠两个类来读写配置:
QConfFileSettingsPrivate用来读写ini文件,
QWinRTSettingsPrivate用来读写windows系统的注册表
有兴趣的可以去研究下QConfFileSettingsPrivate的readIniFile和writeIniFile函数。
通过QSettings类,我们就能在不使用数据库的情况下,很方便地保存一些简单的程序配置。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
