linux下QSettings读写配置文件

今天才注意到QSettings类已经提供了读写配置文件的方式,之前是启动时读取文件、关闭时写入配置,需要手动去打开创建指定位置的配置文件,然后查找修改指定字段的文本内容,也是够麻烦的了。

QSettings的使用也是非常简单和方便的,当然我也只是今天简单测了一下,没有把帮助文档里的所有例子都使用一下,不过单纯的读取和写入配置文件已经能满足我日常的工作了,在这里也是记录下:

先构造一个QSettings对象,传入两个值:公司名称和程序名称

linux下QSettings读写配置文件_第1张图片

 之后就可以通过这个settings对方去读取和写入配置文件了,读取时使用value方法,返回一个QVariant类型,toString()转到QString,toInt()转到int类型,其它的也类似;写入时使用setValue()方法,就像键值对数据一样,一个key对应一个data,可存储的数据有QString、QRect、QColor甚至是QImage等等,类型繁多,简单易用哦。

如果想在程序任何地方任何时间去读写配置文件,都需要构建一个QSettings对象,并且指明具体的参数值,也就是公司名和程序名,这样还是不够方便的,想更简单点就在程序开始时直接指定一次公司名和程序名,之后直接使用默认的QSettings构造对象去读写配置即可: 

linux下QSettings读写配置文件_第2张图片

看文档里,配置文件存储的位置是可以找到的,我常在linux系统下做开发,一般默认存储在“$HOME/.config/公司名/程序名.conf”这里:

linux下QSettings读写配置文件_第3张图片

默认文件是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("conf").toString();
    qDebug() << m_conf;

}

MainWindow::~MainWindow()
{
    QSettings settings;
    settings.setValue("conf", "wqert");
}

第一次程序启动时,读取m_conf值为“”,关闭界面时将该值写为“wqert",再次启动后读取值为“wqert”,正确,看一下配置文件:

linux下QSettings读写配置文件_第4张图片

内容正确,配置文件路径正确,OK了!

你可能感兴趣的:(Qt,Ubuntu,Linux)