启动时读取文件、关闭时写入配置--------------记录程序的默认配置,位置大小或者最近打开的文件列表等参数
QSettings的使用也是非常简单和方便的,当然我也只是今天简单测了一下,没有把帮助文档里的所有例子都使用一下,不过单纯的读取和写入配置文件已经能满足我日常的工作了,在这里也是记录下:
先构造一个QSettings对象,传入两个值:公司名称和程序名称
之后就可以通过这个settings对方去读取和写入配置文件了,读取时使用value方法,返回一个QVariant类型,toString()转到QString,toInt()转到int类型,其它的也类似;写入时使用setValue()方法,就像键值对数据一样,一个key对应一个data,可存储的数据有QString、QRect、QColor甚至是QImage等等,类型繁多,简单易用哦。
如果想在程序任何地方任何时间去读写配置文件,都需要构建一个QSettings对象,并且指明具体的参数值,也就是公司名和程序名,这样还是不够方便的,想更简单点就在程序开始时直接指定一次公司名和程序名,之后直接使用默认的QSettings构造对象去读写配置即可:
看文档里,配置文件存储的位置是可以找到的,我常在linux系统下做开发,一般默认存储在“$HOME/.config/公司名/程序名.conf”这里:
默认文件是conf后缀的,可以通过更改QSettings的Format设置为ini后缀,不过感觉没什么区别的。
测试例子:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QCoreApplication::setOrganizationName("XXX");
//QCoreApplication::setOrganizationDomain("www.xxxxxx.com");
QCoreApplication::setApplicationName("xxx");
QSettings settings;
settings.setDefaultFormat(QSettings::IniFormat);
MainWindow w;
w.show();
return a.exec();
}
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
m_conf = "";
QSettings settings;
m_conf = settings.value("settings/conf","aaaa").toString();
qDebug() << m_conf;
QRect rect = settings.value("settings/geometry",QRect(200, 200, 400, 400)).toRect();
move(rect.topLeft());
resize(rect.size());
}
MainWindow::~MainWindow()
{
QSettings settings;
settings.setValue("settings/conf", "wqert");
settings.setValue("settings/geometry", geometry());
}
第一次程序启动时,读取settings 程序位置大小等参数值,函数value()的第二个参数为默认值,因为第一次启动没写配置文件。
---------------------
作者:虾米小小小
来源:CSDN
原文:https://blog.csdn.net/qq_32417149/article/details/106012869
版权声明:本文为作者原创文章,转载请附上博文链接!