Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

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