溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

QSettings使用方法

發(fā)布時(shí)間:2020-07-19 15:24:41 來(lái)源:網(wǎng)絡(luò) 閱讀:2832 作者:WZM3558862 欄目:開發(fā)技術(shù)

一 、QSettings介紹:

    用戶通常希望應(yīng)用程序記住其設(shè)置。在windows中,這些設(shè)置保存在注冊(cè)表中,ios在屬性文件列表中,而unix,在缺乏標(biāo)準(zhǔn)的情況下,其存儲(chǔ)在ini文本中。QSettings有兩種存儲(chǔ)格式:QSettings::NativeFormat(在windows平臺(tái)可讀寫注冊(cè)表)、QSettings::IniFormat(讀寫ini文件)、QSettings::InvalidFormat

    QSettings使用戶可以保存應(yīng)用程序設(shè)置,并且支持用戶自定義存儲(chǔ)格式。QSetings API基于QVariant,因而你可以存儲(chǔ)卻大部分類型的數(shù)據(jù)。如果你需要一個(gè)非持久性的存儲(chǔ),推薦使用QMap<QString,QVariant>.


二、QSettings常用API:

  •    創(chuàng)建QSettings對(duì)象

 QSettings(const QString & organization, const QString & application = QString(), QObject * parent = 0)

    創(chuàng)建一個(gè)QSettings對(duì)象,必須傳入應(yīng)用程序名稱,及公司名稱。如果你的設(shè)置來(lái)自程序中不同的地方,你需要通過(guò)QCoreApplication::setOrganizationName() and QCoreApplication::setApplicationName()指定程序名稱和公司名稱,并且使用默認(rèn)的構(gòu)造函數(shù)QSettings settings。

    QCoreApplication::setOrganizationName("MySoft");

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

    QCoreApplication::setApplicationName("Star Runner");

    ...

    QSettings settings;

  • 寫入數(shù)據(jù)

  settings.setValue("editor/wrapMargin", 68);

     每一條信息包含一個(gè)key和一個(gè)value,value類型為QVariant。

  •  讀取數(shù)據(jù)

int margin = settings.value("editor/wrapMargin").toInt();

    如果key不存在,則返回 null QVariant(可以被轉(zhuǎn)化為整數(shù)0)

    讀取數(shù)據(jù)的時(shí)候,可以傳遞第二個(gè)參數(shù),給定新的value:

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

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

    移除某項(xiàng):remove(const QString & key)

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


三、使用示例

  •     讀寫注冊(cè)表

    實(shí)例化對(duì)象時(shí),設(shè)置存儲(chǔ)格式為:QSettings::NativeFormat,利用'/'來(lái)填寫要讀寫的注冊(cè)表:

    

QSetings settings(("HKEY_CURRENT_USER/", QSettings::NativeFormat);settings.setValue("regedit/test","green");//設(shè)置key-value鍵值對(duì)QString value = settings.value("regedit/test");//讀取key對(duì)應(yīng)的value
  • 讀寫ini文件

#include <QApplication>#include <QSettings>int main(int argc, char *argv[]){    QApplication a(argc, argv);    QSettings settings("E:/QTProject/BLOG/Settings_test/test.ini", QSettings::IniFormat);    settings.setValue("Student/name", "ChengKeKe");    settings.setValue("Student/sex", "man");    settings.setValue("Student/age", 24);    settings.setValue("Address", "Xi'an");    QString name = settings.value("Student/name").toString();    QString sex = settings.value("Student/sex").toString();    return a.exec();}

打開test.ini如圖:

QSettings使用方法
  注: 其中注意讀取Value時(shí),如果存儲(chǔ)值為16進(jìn)制,不能使用int QVariant::toInt(bool * ok = 0) const,結(jié)果將返回0;



向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI