您好,登錄后才能下訂單哦!
一 、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如圖:
注: 其中注意讀取Value時(shí),如果存儲(chǔ)值為16進(jìn)制,不能使用int QVariant::toInt(bool * ok = 0) const,結(jié)果將返回0;
免責(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)容。