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

    @aha_1980 Yes, I have checked the filename and it's existence, all are true.

    aha_1980A Offline
    aha_1980A Offline
    aha_1980
    Lifetime Qt Champion
    wrote on last edited by
    #4

    @thippu Please see that I edited my post.

    Qt has to stay free or it will die.

    T 1 Reply Last reply
    0
    • 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