Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. QSettings how to remove elements from array?
Qt 6.11 is out! See what's new in the release blog

QSettings how to remove elements from array?

Scheduled Pinned Locked Moved Unsolved General and Desktop
7 Posts 2 Posters 4.9k Views 1 Watching
  • 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.
  • hezfH Offline
    hezfH Offline
    hezf
    wrote on last edited by
    #1

    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
    0
    • RatzzR Offline
      RatzzR Offline
      Ratzz
      wrote on last edited by
      #2

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

      --Alles ist gut.

      hezfH 1 Reply Last reply
      0
      • RatzzR Ratzz

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

        hezfH Offline
        hezfH Offline
        hezf
        wrote on last edited by
        #3

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

        1 Reply Last reply
        0
        • RatzzR Offline
          RatzzR Offline
          Ratzz
          wrote on last edited by Ratzz
          #4

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

          --Alles ist gut.

          hezfH 1 Reply Last reply
          0
          • RatzzR Ratzz

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

            hezfH Offline
            hezfH Offline
            hezf
            wrote on last edited by
            #5

            @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
            0
            • RatzzR Offline
              RatzzR Offline
              Ratzz
              wrote on last edited by Ratzz
              #6

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

              --Alles ist gut.

              hezfH 1 Reply Last reply
              0
              • RatzzR Ratzz

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

                hezfH Offline
                hezfH Offline
                hezf
                wrote on last edited by
                #7

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

                • Login

                • Login or register to search.
                • First post
                  Last post
                0
                • Categories
                • Recent
                • Tags
                • Popular
                • Users
                • Groups
                • Search
                • Get Qt Extensions
                • Unsolved