QSettings how to remove elements from array?



  • I have a array save in QSettings
    I can modify the element
    But I don't know how to remove it
    Anybody know?





  • @Ratzz Yes,I could remove the element's key
    But the array's element is still ,just an empty one



  • I did you get you clearly.. can you show the code or explain me more?



  • @Ratzz okay

    //this is I write a array
        QSettings setting("TEST","demo1");
        setting.beginWriteArray("array1");
        for(auto i=0;i<10;i++){
            setting.setArrayIndex(i);
            setting.setValue("demo","value"+QString::number(i));
        }
        setting.endArray();
    
    //this is I read a array
        auto size = setting.beginReadArray("array1");
        for(auto i=0;i<size;i++){
            setting.setArrayIndex(i);
            qDebug()<<setting.value("demo");
        }
        setting.endArray();
    
    //read the array and remove
        setting.beginReadArray("array1");
        setting.setArrayIndex(5);
        setting.remove("demo");
        setting.endArray();
    //the result is 
    //QVariant(QString, "value0")
    //QVariant(QString, "value1")
    //QVariant(QString, "value2")
    //QVariant(QString, "value3")
    //QVariant(QString, "value4")
    //QVariant(Invalid)
    //QVariant(QString, "value6")
    //QVariant(QString, "value7")
    //QVariant(QString, "value8")
    //QVariant(QString, "value9")
    
    //write the array and remove
        setting.beginWriteArray("array1");
        setting.setArrayIndex(5);
        setting.remove("demo");
        setting.endArray();
    
    //result
    QVariant(QString, "value0")
    QVariant(QString, "value1")
    QVariant(QString, "value2")
    QVariant(QString, "value3")
    QVariant(QString, "value4")
    QVariant(Invalid)
    

    Is it clearly?



  • I think you need to set back the value to QSettings after you remove.



  • @Ratzz
    But when I want remove the last one ,what can I do?

    I get a stupid method,read all keys and value to a list
    and then clear the settings
    removeat(index) the list
    At last ,write this list to settings.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.