[轉載] QSettings之 beginGroup()、childKeys() 、value()


版權聲明:本文爲CSDN博主「紫梧桐」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/waangyan/article/details/69542724

 

QSettings之 beginGroup()、childKeys() 、value()


1. void QSettings:: beginGroup()

void QSettings::​beginGroup(const QString & prefix)

Appends prefix to the current group.

給當前的group裏由QSettings指定的所有鍵(key),自動附上當前的group前綴。另外,一些查詢函數例如childGroups(), childKeys(), allKeys() ,是基於group操作的。

對於路徑相同的設置,使用group可以省去重複敲入路徑名稱的麻煩。例如:

    settings.beginGroup("mainwindow");
    settings.setValue("size", win->size());
    settings.setValue("fullScreen", win->isFullScreen());
    settings.endGroup();
     
    settings.beginGroup("outputpanel");
    settings.setValue("visible", panel->isVisible());
    settings.endGroup();


上面代碼會設置三組設置的值:

    mainwindow/size

    mainwindow/fullScreen

    outputpanel/visible

組(groups)能夠形成網絡。調用beginGroup()後,需要調用endGroup(), 復位當前的組(group)。即:beginGroup()和endGroup()成套使用,否則會形成group網絡。


 
2. QStringList QSettings:: childKeys() const

QStringList QSettings::​childKeys() const

返回QSttings對象的所有頂層keys的一個列表。

例如:

    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"]

如果一個group用beginGroup()進行了group的設置,則返回的這個group裏的頂層keys,不含group前綴。

    settings.beginGroup("fridge");
    keys = settings.childKeys();// keys: ["color", "size"]

通過遞歸調用childKeys() 和childGroups() ,可以遍歷整個設置的各個層級。


3. Qvaiant Qsettings::value()

QVariant QSettings::​value(const QString & key, const QVariant & defaultValue = QVariant()) const

返回鍵(key)的值。如果鍵不存在,返回默認值;如果沒有指定默認值,返回默認的QVariant值。

注意:windows註冊表和INI文件的鍵名(keys),大小寫不區分;而Mac OS X的Carbon Preference API的鍵名(keys),區分大小寫,也就是,大小寫敏感。

例如:

    QSettings settings;
    settings.setValue("animal/snake", 58);
    settings.value("animal/snake", 1024).toInt();   // returns 58
    settings.value("animal/zebra", 1024).toInt();   // returns 1024
    settings.value("animal/zebra").toInt();         // returns 0

 
————————————————
版權聲明:本文爲CSDN博主「紫梧桐」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/waangyan/article/details/69542724

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章