Qt4.0中又增加了一個非常有用的類QSettings,這個類是Qt4提供的一個讀取配置文件的類,在Windows平台上,它提供了ini文件的讀寫,以及注冊表的讀寫功能。我們都知道,用戶對於應用程序經常有某種需要,比如說:窗體的大小,出現的位置,以及最近打開的文件等等,而這些需求均可由QSettings類實現。
一般來說settings都存放在系統之中,在windows操作系統下一般都是ini加密文件中或者是系統的注冊表中,而對於mac系統來說,一般存放在XML文件中,下面我們就來看看它的具體用法。
讀過《C++ GUI Programming with Qt 4, Second Edition》這本書的人應該都遇到過這個疑問,我們先來看看它的構造函數吧:
QSettings ( const QString & organization, const QString & application = QString(), QObject * parent = 0 ) QSettings ( Scope scope, const QString & organization, const QString & application = QString(), QObject * parent = 0 ) QSettings ( Format format, Scope scope, const QString & organization, const QString & application = QString(), QObject * parent = 0 ) QSettings ( const QString & fileName, Format format, QObject * parent = 0 ) QSettings ( QObject * parent = 0)
當我們創建一個QSettings的對象時,一般需要傳遞兩個參數,第一個是公司或者組織的名稱,第二個是應用程序的名稱,我們以例子來說明問題:
QSettings settings("Yzs_think", "Application");
公司或組織名稱:Yzs_think, 程序名稱:Application
下面就要對其值進行設置(一般用法):
1、寫入數據:
QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint(); QSize size = settings.value("size", QSize(400, 400)).toSize(); resize(size); move(pos);
第一句是設置窗口出現的位置坐標,第二句實現了對窗口大小的設置,第三局和第四句如果 settings 裡有以前存下的 ( 用 setValue 設置的 )pos 和 size 的值,則讀取,如果沒有,不會返回 null ,而會使用我們給它的起始值—— default value ——即應用程序第一次運行時的情況。
2、讀出信息數據
QSettings settings("Yzs_think", "Application"); settings.setValue("pos", pos()); settings.setValue("size", size());
這裡值得注意的是寫數據和讀數據的時候的公司名稱與應用程序名稱必須一樣,否則無法正常讀取。
下面我們以一段具體的程序來說明問題:
void MainWindow::readSettings() { QSettings settings("Yzs_think", "Application"); QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint(); QSize size = settings.value("size", QSize(400, 400)).toSize(); resize(size); move(pos); } void MainWindow::writeSettings() { QSettings settings("Yzs_think", "Application"); settings.setValue("pos", pos()); settings.setValue("size", size()); }
而後在我們的程序中,每次重新打開應用程序時,其窗口大小和位置都是上一次關閉之前的位置。
本文出自 “驿落黃昏” 博客,請務必保留此出處http://yiluohuanghun.blog.51cto.com/3407300/952807