使用者對應用程式經常有這樣的要求:要求它能記住它的settings,比如視窗大小、位置和密碼等等。有三種方法可以實現:
登錄檔(registry)是windows中的乙個重要的資料庫,用於儲存系統和應用程式的設定資訊。qt提供了乙個qsettings類,在windows平台,它提供了ini檔案讀寫,登錄檔讀寫的功能。而且使用也非常簡單。
qsettings::format有兩種:
讀寫登錄檔的示例如下:
//使用常量字串來指定儲存的登錄檔位置
qsettings settings("hkey_current_user\\software\\aaa",qsettings::nativeformat);
settings.setvalue("test", "11111");//寫鍵值對
qstring value = settings.value("test", "error").tostring();//讀鍵值對
qdebug() << value; //輸出:"11111"
其中aaa是資料夾,登錄檔如下圖:
缺點在於只有windows系統有登錄檔,當在linux系統下就不能使用登錄檔了。
ini檔案格式(initialization file)是某些平台或軟體上的配置檔案的非正式標準,以節(section)和鍵(key)構成,被用來對作業系統或特定程式初始化或進行引數設定。常用於微軟windows作業系統,但除了windows現在很多其他作業系統下面的應用軟體也有.ini檔案。讀寫ini檔案的示例如下:
/*** 寫入密碼和鎖屏時間到配置文字中 ***/
//qsettings建構函式的第乙個引數是ini檔案的路徑,第二個引數表示針對ini檔案,第三個引數可以預設
qsettings *iniwrite = new qsettings("config.ini", qsettings::iniformat);
iniwrite->setvalue("passwd", "123456");
iniwrite->setvalue("locktime", 4);
//寫入完成後刪除指標
delete iniwrite;
/*** 讀取配置檔案中的密碼和鎖屏時間 ***/
//qsettings建構函式的第乙個引數是ini檔案的路徑,第二個引數表示針對ini檔案,第三個引數可以預設
qsettings *iniread = new qsettings("config.ini", qsettings::iniformat);
qstring strpasswd = iniread->value("passwd").tostring();
int intlock = iniread->value("locktime").toint();
//讀入完成後刪除指標
delete iniread;
生成的config.ini檔案內容如下:
[general]
passwd=123456
locktime=4
如果呼叫setvalue函式時,已經存在了同名的key,那麼新的值會覆蓋原來的值。
第三種方法就是使用自定義檔案(例如.txt),例如使用讀寫文字方式儲存」密碼「、」鎖屏時間「等數值時,需要寫入特定行,修改"locktime="後面的鎖屏時間數值,文字內容如下:
passwd=726350
locktime=10
因為讀寫內容不多,所以可以先全部讀取,通過 contains() 來找到包含"locktime="的行,並使用replace加上qregexp替換成從qlineedit輸入的字串,程式如下所示:
/*****************將設定的鎖屏時間數值寫入文字中*****************/
//讀取文字
qfile file(config.ini);
file.open(qiodevice::readonly | qiodevice::text);
qstring strall;
qstring strline;
while (!file.atend())
strall = strall+ strline;
}file.close();
//寫入文字
file.open(qiodevice::writeonly | qiodevice::text | qiodevice::truncate);
file.write(strall.tolatin1());
file.close();
為避免最開始不存在文字的情況下開啟文字失敗,可以先初始化配置文字,程式如下所示:
/******************初始化配置文字******************/
//寫入加密後的密碼和鎖屏時間到配置文字中
qfile file(config.ini);
//第一次開啟程式時檔案不存在,才寫入資料初始化文字
if(!file.exists())
config.txt文字內容如下:
passwd=123456
locktime=4
QT下應用程式開發
一 應用程式的編輯與編譯 從最簡單也是最著名的hello word來學習qt。首先建立helloword.cpp mkdir hello vi helloword.cpp include int main int argc,char argv cd hello 指定交叉編譯器路徑 export pa...
使用QSettings儲存QT應用程式資料
qsettings類提供了持久的跨平台應用程式設定,這些settings一般都是存在系統裡的,比如windows一般都寫在系統登錄檔或者寫ini檔案,mac系統一般都在xml檔案裡,那麼按照一般的標準來說,許多應用程式是用ini檔案來實現的。而qsettings就是提供了一種方便的方法來儲存和恢復應...
QT中使用QSettings儲存應用程式配置資訊
使用qt中的qsettings中的一些方法,以下是我的一些簡單的應用方面,經過測試可行。首先我new了這麼乙個兩個物件,乙個物件我是用來寫入配置檔案的,乙個物件我是用來讀取配置檔案中資訊的 qt中使用qsettings類讀寫ini檔案 qsettings建構函式的第乙個引數是ini檔案的路徑,第二個...