1. 程式人生 > 其它 >[轉]linux下QSettings讀寫配置檔案

[轉]linux下QSettings讀寫配置檔案

技術標籤:QtlinuxC/C++linuxqt

啟動時讀取檔案、關閉時寫入配置--------------記錄程式的預設配置,位置大小或者最近開啟的檔案列表等引數

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
版權宣告:本文為作者原創文章,轉載請附上博文連結!