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 not returning keys of the predefined .ini file
Forum Updated to NodeBB v4.3 + New Features

QSettings not returning keys of the predefined .ini file

Scheduled Pinned Locked Moved Solved General and Desktop
20 Posts 4 Posters 2.5k 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.
  • T thippu

    Hi,
    I'm having predefined.ini file
    It's contents are:

    [Personal]//I want these to be groups in the QSettings object, Later I may display the contents of each group.
    Name=Abc
    Age=10
    [Education]
    Highest=Phd
    [Interests]
    hobby=volleyball
    [these_may_grow]// I need to scan all the [ ]
    these_may_grow=these_may_grow
    

    I have global QSettings object, I initialized in the constructor, now I want to read the predefined .ini file and create a group([contents of this]).

    code to retrieve values in predefined .ini I have developed is :

    iniSettings->setPath(QSettings::IniFormat,QSettings::UserScope,filename);// filename is a global variable here
    //If I do the following codes 
    qDebug()<<iniSettings->group();//returns " "
    qDebug()<<iniSettings->allKeys();//returns ()
    

    Where am I failing?

    raven-worxR Offline
    raven-worxR Offline
    raven-worx
    Moderators
    wrote on last edited by raven-worx
    #5

    @thippu said in QSettings not returning keys of the predefined .ini file:

    iniSettings->setPath(QSettings::IniFormat,QSettings::UserScope,filename);// filename is a global variable here
    //If I do the following codes
    qDebug()<<iniSettings->group();//returns " "
    qDebug()<<iniSettings->allKeys();//returns ()

    you need to call QSettings::beginGroup() before reading/writing
    also you can check if the return value of QFile::exists(filename) if the application really can find your ini-file.

    --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
    If you have a question please use the forum so others can benefit from the solution in the future

    T 2 Replies Last reply
    1
    • aha_1980A aha_1980

      @thippu Please see that I edited my post.

      T Offline
      T Offline
      thippu
      wrote on last edited by
      #6

      @aha_1980 Yes, I saw it, and I'm sure there is no filename initialization in the constructor, it happens through the QFileDialog.getOpenFilename();
      and for double sure I do if(!QFile(filename).exists()).

      1 Reply Last reply
      0
      • raven-worxR raven-worx

        @thippu said in QSettings not returning keys of the predefined .ini file:

        iniSettings->setPath(QSettings::IniFormat,QSettings::UserScope,filename);// filename is a global variable here
        //If I do the following codes
        qDebug()<<iniSettings->group();//returns " "
        qDebug()<<iniSettings->allKeys();//returns ()

        you need to call QSettings::beginGroup() before reading/writing
        also you can check if the return value of QFile::exists(filename) if the application really can find your ini-file.

        T Offline
        T Offline
        thippu
        wrote on last edited by
        #7

        @raven-worx Yes, I did qDebug()<<QFile(filename).exists(); it returned me true.

        1 Reply Last reply
        0
        • raven-worxR raven-worx

          @thippu said in QSettings not returning keys of the predefined .ini file:

          iniSettings->setPath(QSettings::IniFormat,QSettings::UserScope,filename);// filename is a global variable here
          //If I do the following codes
          qDebug()<<iniSettings->group();//returns " "
          qDebug()<<iniSettings->allKeys();//returns ()

          you need to call QSettings::beginGroup() before reading/writing
          also you can check if the return value of QFile::exists(filename) if the application really can find your ini-file.

          T Offline
          T Offline
          thippu
          wrote on last edited by
          #8

          @raven-worx for beginGroup() , iniSetting->beginGroup("[");// I doubt it will work as per .ini filestructure?

          raven-worxR 2 Replies Last reply
          0
          • T thippu

            @raven-worx for beginGroup() , iniSetting->beginGroup("[");// I doubt it will work as per .ini filestructure?

            raven-worxR Offline
            raven-worxR Offline
            raven-worx
            Moderators
            wrote on last edited by raven-worx
            #9

            @thippu
            with respect to your ini file from your first post you should call:

            iniSettings->beginGroup("Personal");
            iniSettings->value("Age");
            iniSettings->endGroup();
            

            or alternatively (if you don't have a group set!):

            iniSettings->value("Personal/Age");
            

            --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
            If you have a question please use the forum so others can benefit from the solution in the future

            T 1 Reply Last reply
            1
            • aha_1980A Offline
              aha_1980A Offline
              aha_1980
              Lifetime Qt Champion
              wrote on last edited by
              #10

              @thippu

              And in addition to what @raven-worx says, you need to use this constructor if you want to specify the filename.

              Otherwise QSettings calculates the filename itself.

              Qt has to stay free or it will die.

              1 Reply Last reply
              3
              • raven-worxR raven-worx

                @thippu
                with respect to your ini file from your first post you should call:

                iniSettings->beginGroup("Personal");
                iniSettings->value("Age");
                iniSettings->endGroup();
                

                or alternatively (if you don't have a group set!):

                iniSettings->value("Personal/Age");
                
                T Offline
                T Offline
                thippu
                wrote on last edited by
                #11

                @raven-worx Yes bro, in that .ini example, [groupname] // may grow and I want to scan them dynamically, how to do it?

                1 Reply Last reply
                0
                • T thippu

                  @raven-worx for beginGroup() , iniSetting->beginGroup("[");// I doubt it will work as per .ini filestructure?

                  raven-worxR Offline
                  raven-worxR Offline
                  raven-worx
                  Moderators
                  wrote on last edited by
                  #12

                  @thippu
                  yes i just wanted to add as @aha_1980 said.
                  Use the mentioned constructor, since in your case it is not required to mess with the scopes.

                  --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
                  If you have a question please use the forum so others can benefit from the solution in the future

                  T 1 Reply Last reply
                  1
                  • raven-worxR raven-worx

                    @thippu
                    yes i just wanted to add as @aha_1980 said.
                    Use the mentioned constructor, since in your case it is not required to mess with the scopes.

                    T Offline
                    T Offline
                    thippu
                    wrote on last edited by
                    #13

                    @raven-worx okay, I have included in the constructor itself.
                    code: iniSettings=new QSettings(filename,QSettings::IniFormat,this);

                    raven-worxR 1 Reply Last reply
                    0
                    • T thippu

                      @raven-worx okay, I have included in the constructor itself.
                      code: iniSettings=new QSettings(filename,QSettings::IniFormat,this);

                      raven-worxR Offline
                      raven-worxR Offline
                      raven-worx
                      Moderators
                      wrote on last edited by
                      #14

                      @thippu
                      and? it's working now?

                      --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
                      If you have a question please use the forum so others can benefit from the solution in the future

                      T 2 Replies Last reply
                      1
                      • raven-worxR raven-worx

                        @thippu
                        and? it's working now?

                        T Offline
                        T Offline
                        thippu
                        wrote on last edited by
                        #15

                        @raven-worx bro, in .ini

                        ) can grow, I want to scan them dynamically, so what to include in
                        beginGroup() ?, please help me.

                        raven-worxR 1 Reply Last reply
                        0
                        • raven-worxR raven-worx

                          @thippu
                          and? it's working now?

                          T Offline
                          T Offline
                          thippu
                          wrote on last edited by thippu
                          #16

                          @raven-worx Yes, bro working. failure was the happing because of the constructor, after setting it properly it working now, I did
                          I can't thank enough to guys @raven-worx , @aha_1980

                          qDebug()<<iniSettings->childGroups();//returns all the heading names````
                          1 Reply Last reply
                          0
                          • T thippu

                            @raven-worx bro, in .ini

                            ) can grow, I want to scan them dynamically, so what to include in
                            beginGroup() ?, please help me.

                            raven-worxR Offline
                            raven-worxR Offline
                            raven-worx
                            Moderators
                            wrote on last edited by
                            #17

                            @thippu
                            with the usage of the right Constructor your ini-file should be read correctly now.
                            So now you can use QSettings::childGroups() to traverse all groups and read the values as i described above or with the use of QSettings::beginGroup() and QSettings::childKeys()

                            foreach( QString group, iniSettings->childGroups() )
                            {
                                 // process group
                                 iniSettings->beginGroup(group);
                                     foreach( QString key, iniSettings->childKeys() )
                                     {
                                            QVariant val = iniSettings->value(key);
                                            // process val
                                     }
                                 iniSettings->endGroup();
                            }
                            

                            --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
                            If you have a question please use the forum so others can benefit from the solution in the future

                            J.HilkJ T 2 Replies Last reply
                            4
                            • raven-worxR raven-worx

                              @thippu
                              with the usage of the right Constructor your ini-file should be read correctly now.
                              So now you can use QSettings::childGroups() to traverse all groups and read the values as i described above or with the use of QSettings::beginGroup() and QSettings::childKeys()

                              foreach( QString group, iniSettings->childGroups() )
                              {
                                   // process group
                                   iniSettings->beginGroup(group);
                                       foreach( QString key, iniSettings->childKeys() )
                                       {
                                              QVariant val = iniSettings->value(key);
                                              // process val
                                       }
                                   iniSettings->endGroup();
                              }
                              
                              J.HilkJ Offline
                              J.HilkJ Offline
                              J.Hilk
                              Moderators
                              wrote on last edited by
                              #18

                              @raven-worx
                              uh hu, using deprecated syntax/macros, shame on you ;-)


                              Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                              Q: What's that?
                              A: It's blue light.
                              Q: What does it do?
                              A: It turns blue.

                              raven-worxR 1 Reply Last reply
                              1
                              • raven-worxR raven-worx

                                @thippu
                                with the usage of the right Constructor your ini-file should be read correctly now.
                                So now you can use QSettings::childGroups() to traverse all groups and read the values as i described above or with the use of QSettings::beginGroup() and QSettings::childKeys()

                                foreach( QString group, iniSettings->childGroups() )
                                {
                                     // process group
                                     iniSettings->beginGroup(group);
                                         foreach( QString key, iniSettings->childKeys() )
                                         {
                                                QVariant val = iniSettings->value(key);
                                                // process val
                                         }
                                     iniSettings->endGroup();
                                }
                                
                                T Offline
                                T Offline
                                thippu
                                wrote on last edited by
                                #19

                                @raven-worx Sure bro, I will use this code to create group and contents of the group.

                                1 Reply Last reply
                                0
                                • J.HilkJ J.Hilk

                                  @raven-worx
                                  uh hu, using deprecated syntax/macros, shame on you ;-)

                                  raven-worxR Offline
                                  raven-worxR Offline
                                  raven-worx
                                  Moderators
                                  wrote on last edited by
                                  #20

                                  @J.Hilk said in QSettings not returning keys of the predefined .ini file:

                                  uh hu, using deprecated syntax/macros, shame on you ;-)

                                  yes, i am still too lazy for such a convenient function to deprecate it also in my head ;)

                                  --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
                                  If you have a question please use the forum so others can benefit from the solution in the future

                                  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