qt讀寫配置檔案( ini)

2021-08-18 17:32:52 字數 3211 閱讀 4209

ini

ini檔案格式是某些平台或軟體上的配置檔案的非正式標準,以節(section)和鍵(key)構成,常用於微軟windows作業系統中。ini檔案是initialization file的縮寫,即初始化檔案。除了windows現在很多其他作業系統下面的應用軟體也有.ini檔案,用來配置應用軟體以實現不同使用者的要求。一般不用直接編輯這些.ini檔案,應用程式的圖形介面即可操作以實現相同的功能。ini檔案被用來對作業系統或特定程式初始化或進行引數設定

檔案格式

節(section)

節用方括號括起來,單獨佔一行,例如:

[section]

鍵(key)

鍵(key)又名屬性(property),單獨佔一行用等號連線鍵名和鍵值,例如:

name=value

qsettings類提供了持久的跨平台應用程式設定。

使用者通常期望應用程式記住它的設定(視窗大小、位置等)所有會話。這些資訊通常儲存在windows系統登錄檔,os x和ios的屬性列表檔案中。在unix系統中,在缺乏標準的情況下,許多應用程式(包括kde應用程式)使用ini文字檔案。

qsettings圍繞這些抽象技術,使我們能夠以便攜的方式儲存和恢復應用程式設定。它還支援自定義儲存格式。

qsettings api基於qvariant,可以儲存很多基礎的型別,比如 qstring、qrect、qimage等。

如果你需要的是乙個非永續性的基於記憶體結構,可以考慮使用

qmap

代替。我們知道,這些

settings

一般都是存在系統裡的,比如

windows

一般都寫在系統登錄檔或者寫

ini檔案,

mac系統一般都在

xml檔案裡,那麼按照一般的標準來說,許多應用程式是用

ini檔案來實現的。而

qsettings

就是提供了一種方便的方法來儲存和恢復應用程式的

settings

。1   

qsettings

的api

是基於qvariant

,qvariant

是一種資料型別的集合,它包含了大部分通常的

qt資料型別,比如

qstring

,qrec

,qimage

,等等。

當我們建立乙個qsetting 物件時,我們需要給它傳遞兩個引數,第乙個是是公司或者組織的名稱,第二個是應用程式的名稱,例如

settings = qsettings(「mypath」,」qtkpn」)

假如我們在應用程式中多次要用到

qsettings

,為了簡單其間,我們可以在主程式中先如下宣告。

當然前提是已經

from pyqt4 importqtcore

然後在應用程式的任何地方想要宣告乙個

qsettings

型別的變數,便不需要書寫兩個引數了,直接用

settings = qsettings

即可。2 

然後在應用程式的任何地方想要宣告乙個

qsettings

型別的變數,便不需要書寫兩個引數了,直接用

settings = qsettings

即可。那麼如何用它來保持應用程式的

settings

資訊呢?我們以字典資料型別與之模擬,它也有

key,以及對應的

value

。比如下面例子:

settings= qsettings(「mysoft」,」qtpad」)

mainwindow =  qmainwindow()

settings.

setvalue(「pos」,qvariant(mainwindow.pos())

settings.

setvalue(「size」,qvariant(mainwindow.size())

上面兩句就是把當前視窗的位置,和大小兩個資訊記錄到了

settings

中,其中的

key就是

」pos」

和」size」

兩個qstring

型別,而它所對應的值就是

qvariant

型別的。當然如果我們要寫的

key已在

settings

中存在的話,則會覆蓋原來的值,寫入新值。

3 那麼實際應用中我們一般會如下:

pos=settings.value("pos", qvariant(qpoint(200,200))).topoint())

size=settings.value("size", qvariant(qsize(400,400))).tosize())

self.resize(size)

self.move(pos)

意思是,如果

settings

裡有以前存下的(用

setvalue

設定的)pos

和size

的值,則讀取,如果沒有,不會返回

null

,而會使用我們給它的起始值——

defaultvalue

——即應用程式第一次執行時的情況。

注意:因為

qvariant

是不會提供所有資料型別的轉化的,比如有

toint(),topoint(),tosize(),

但是卻沒有對

qcolor

,qimage

和qpixmap

等資料型別的轉化,此時我們可以用

qvariant.value

(),具體參看

qvariant

模組說明。

由此我們可以看出,這個

writesettings

其實就是個寫登錄檔的過程。

當然,我們也可以不寫登錄檔,我們寫

ini檔案:

settings =qsettings("./qtpad.ini", qsettings.iniformat)

settings.setvalue("pos", qvariant(self.pos()))

settings.setvalue("size", qvariant(self.size()))

就會在當前資料夾下產生乙個

qtpad.ini

檔案,開啟後檔案內容為:

[general]

pos=@point(200 200)

size=@size(400 400)

qt 讀寫配置檔案 ini

ini 檔案是 initialization file 的縮寫,即初始化檔案。除了windows 現在很多其他作業系統下面的應用軟體也有.ini 檔案,用來配置應用軟體以實現不同使用者的要求。一般不用直接編輯這些 ini 檔案,應用程式的圖形介面即可操作以實現相同的功能。它可以用來存放軟體資訊,登錄...

QT讀寫ini配置檔案

下面是寫ini檔案 qt中使用qsettings類讀寫ini檔案 qsettings建構函式的第乙個引數是ini檔案的路徑,第二個引數表示針對ini檔案,第三個引數可以預設 qsettings configiniwrite new qsettings housemanager.ini qsettin...

QT中如何讀寫ini配置檔案

如圖1所示,我們需要在qt介面中實現手動讀取引數存放的位置,那麼我們該如何做呢?方法 讀取ini格式的配置檔案,實現路徑的寫入與讀取。初始化乙個.ini配置檔案 qapp是qt系統自帶的,可以直接使用 qstring inifilepath qapp applicationdirpath confi...