You are on page 1of 2

Qt ve QSettings

Kaya Ouz
<kaya@kuzeykutbu.org> Bu belge ve ierisindeki kodlar GPL lisansldr.

QSettings Nedir?
Kullandnz her programn bir "SETTINGS" blm vardr. Buradan programla ilgili ayarlar yaparsnz. nemli olan bu ayarlar bir ekilde program tekrar baladnda uygulamaktr. Bunun iin birok yntem var. rnein Linux altnda birok program home dizininizde gizli dosyalar oluturur. Bunlar genelde rc ile biterler ve programnzn ayarlarn tutarlar. Yap olarak programcnn izledii bir biimde olsalar da ekilleri
use_font = Sans, 10 show_line_numbers = 1 tab_space = 3

gibi ayarlarn karlklarnda deerleri duracak ekildedir. Bunlar program iinden okutmak ve ayarlar deitiinde tekrar kaydetmeniz gerekecek, bunun iin metodlar yazmanz gerekecek, dosyadaki bir hata belki btn ayarlarn bozulmasna neden olacaktr. Btn bunlarn stesinden gelmek iin QSettings denen snf kullanabilirsiniz! QSettings, her platforma zel ekilde, ayarlarnz tutmak, dzenlemek, armak ve kaydetmek gibi btn ilemleri gren bir snf. Linux altnda yukardakine benzer ekilde ayarlar tutarken, Windows altnda bu deerleri Registry'de tutmaktadr. Mac altnda ne yapyor bilmiyorum :) Ama sonuta programn ayarlarn kontrol etmek iin QSettings iimizi ok rahat bir ekilde halledecektir.

Nasl Kullanacam?
QSettings'i kullanmadan nce karar vermeniz gereken irket addr. Bir irket adnz yoksa benim gibi Java'daki paket mant ile alan adn kullanabilirsiniz. Bir de programnzn ad gerekiyor elbette. Bu sayede programnza zel ayarlar yaratyor, ya da ulayorsunuz:
#include <QSettings> ... QSettings ayarlar("KuzeyKutbu.Org", "QMetin");

Bunu programnzda istediiniz yerde kullanabilirsiniz. Ama en mantkls program ilk yklenirken, ana pencerenin kurucusunda (constructor) kullanmanz daha iyi olacaktr. Hazr pencere kurulurken gerekli ayarlar uygulayabilirsiniz. Nasl

uygulayacaksnz peki? Yukardaki koda devam edelim:


bool showLineNumbers = ayarlar.value("editor/lineNumbers", true).toBool(); int tabSpace = ayarlar.value("editor/tabSpace", 3).toInt();

Neler oluyor? ncelikle QSettings ile dnen deerler QVariant tipindedir. "O ne?" derseniz, void deiken tipi birey, yani aslnda ok benzemese de benzedii yer u: Dnen deeri istediiniz bir tipe "cast" edebilirsiniz. Cast etmek nedir diyorsanz, deiken tipini baka bir deiken tipine evirmek diyebilirim. Tabii bir float deerini int'e cast ederseniz, diyelim 2.12 saysn, o zaman o nokta 12 gider, 2 kalr. Ama int'i float'a cast ederseniz, diyelim 2'yi, o zaman 2.0 gibi olur. QVariant dier btn snflara deer kayb olmadan cast edilebilen geni bir snftr, iiniz rahat rahat kullanabilirsiniz, hatta kullannz :) Peki value() metodundaki ikinci deiken nedir? Bu ntanml, ya da varsaylan denen deerdir. Yani ayarlarda byle bir deer yoksa bu deeri kullan demektir. Yeni deerleri nasl kaydedeceiz? Bunu daha ok ayarlar penceresindeki "Tamam" tuuna basldktan sonra yapacaksnz :) Tek yapmanz gereken ayarlar setValue ile kaydetmek:
ayarlar.setValue("editor/lineNumbers", false); ayarlar.setValue("editor/tabSpace", 4);

Burada false ve 4 yazan yerlere yksek ihtimalle arayzden gelen deerleri koyacaksnz. Peki u editor/tabSpace derken editor/ ne ie yaryor? Bir programn birden ok farkl ayar olabilir. Dzenleyici ile ilgili ayarlar, programn genel ayarlar, veritaban ayarlar vs. Bunlar istediiniz balklar altnda toplayabilirsiniz.

Daha fazla bilgi...


Daha fazla bilgi iin Assistant'n QSettings maddesine bakabilir, daha nce bu zellii kullanan programlara [1] bakabilirsiniz :)

You might also like