Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Unsolved QSettings how to remove elements from array?

    General and Desktop
    2
    7
    2673
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • hezf
      hezf last edited by

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

      1 Reply Last reply Reply Quote 0
      • Ratzz
        Ratzz last edited by

        Hi ,
        Did you try remove ? http://doc.qt.io/qt-4.8/qsettings.html#remove

        --Alles ist gut.

        hezf 1 Reply Last reply Reply Quote 0
        • hezf
          hezf @Ratzz last edited by

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

          1 Reply Last reply Reply Quote 0
          • Ratzz
            Ratzz last edited by Ratzz

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

            --Alles ist gut.

            hezf 1 Reply Last reply Reply Quote 0
            • hezf
              hezf @Ratzz last edited by

              @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?

              1 Reply Last reply Reply Quote 0
              • Ratzz
                Ratzz last edited by Ratzz

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

                --Alles ist gut.

                hezf 1 Reply Last reply Reply Quote 0
                • hezf
                  hezf @Ratzz last edited by

                  @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.

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post