QSettings類提供了持久的跨平臺應(yīng)用程序設(shè)置闰蛔。
嗯匪傍,一句話概括QSettings……
- 創(chuàng)建
來看一下原型:
QSettings::QSettings(const QString &organization, const QString &application = QString(), QObject *parent = Q_NULLPTR)
栗子:
QSettings settings("MySoft","App");
第一個參數(shù)是公司組織名考榨,而后是程序名瘤袖。
也可以直接使用QCoreApplication::setOrganizationName()
和 QCoreApplication::setApplicationName()
默認(rèn)組織程序名:
QCoreApplication::setOrganizationName("MySoft");
QCoreApplication::setOrganizationDomain("mysoft.com");
QCoreApplication::setApplicationName("App");
...
QSettings settings;
- 寫值
1.單純的對應(yīng)
settings.setValue("height", 200);
這里便創(chuàng)建了一個height鍵并賦值為200
(如果存在相同的設(shè)置鍵测柠,現(xiàn)有的值將被新值覆蓋誉结。為了提高效率鹅士,這些變化可能不會被立即保存到永久存儲券躁,可以隨時調(diào)用sync()來提交更改)
2.前綴
settings.beginGroup("MainWindow");
settings.setValue("height", 200);
settings.setValue("weight", 100);
settings.endGroup();
這里在MainWindow的前綴下便有了值為200的height鍵和值為100的weight鍵
- 讀值
1.單純的對應(yīng)
settings.value("height",200);
返回相應(yīng)值惩坑,第一個參數(shù)就是所對應(yīng)的鍵的名稱了,第二個參數(shù)則是默認(rèn)值(也就是說如果沒有height的值時也拜,QSettings將會返回一個空QVariant(可轉(zhuǎn)換為整數(shù)0)以舒,那么這時就可以使用默認(rèn)值)
2.前綴
settings.beginGroup("MainWindow");
settings.value("height", 200);
settings.value("weight", 100);
settings.endGroup();
同上,同上~
- 鍵的操作
1.獲取所有鍵
QStringList QSettings::allKeys() const
無參數(shù)慢哈,返回一個包含所有鍵的QStringList(注意 includeB印)
來吧,看看官方的Example:
QSettings settings;
settings.setValue("fridge/color", QColor(Qt::white));
settings.setValue("fridge/size", QSize(32, 96));
settings.setValue("sofa", true);
settings.setValue("tv", false);
QStringList keys = settings.allKeys();
// keys: ["fridge/color", "fridge/size", "sofa", "tv"]
2.獲取所有子鍵集
QStringList QSettings::childGroups() const
官方的Example:
QSettings settings;
settings.setValue("fridge/color", QColor(Qt::white));
settings.setValue("fridge/size", QSize(32, 96));
settings.setValue("sofa", true);
settings.setValue("tv", false);
QStringList groups = settings.childGroups();
// groups: ["fridge"]
3.獲取所有子鍵
QStringList QSettings::childKeys() const
Example:
QSettings settings;
settings.setValue("fridge/color", QColor(Qt::white));
settings.setValue("fridge/size", QSize(32, 96));
settings.setValue("sofa", true);
settings.setValue("tv", false);
QStringList keys = settings.childKeys();
// keys: ["sofa", "tv"]
4.判斷是否存在指定的鍵
bool QSettings::contains(const QString & key) const
- 刪除相關(guān)的鍵
void QSettings::remove(const QString & key)
4.刪除所有鍵
void QSettings::clear()
嗯卵贱,終于寫完了滥沫,自己目前正好要做一個有關(guān)QSettings的項目,心里有底了……感覺QSettings的文檔里的example是有史以來最多的……