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. Configure QSettings ((QSettings::Format and QSettings::Scope )
Forum Updated to NodeBB v4.3 + New Features

Configure QSettings ((QSettings::Format and QSettings::Scope )

Scheduled Pinned Locked Moved Solved General and Desktop
15 Posts 7 Posters 1.4k Views 4 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.
  • VRoninV VRonin

    Just subclass QSettings

    class MySettings : public QSettings{
        Q_OBJECT
        Q_DISABLE_COPY(MySettings)
    public:
        explicit MySettings(QObject *parent = nullptr)
            : QSettings(QSettings::IniFormat, QSettings::UserScope, 
    #ifdef Q_OS_DARWIN
                QStringLiteral("mysoft.com")
    #else
                QStringLiteral("MySoft")
    #endif
                , QStringLiteral("Star Runner"), parent)
        {}
    };
    

    now use MySettings settings wherever you'd have used QSettings settings

    kshegunovK Offline
    kshegunovK Offline
    kshegunov
    Moderators
    wrote on last edited by kshegunov
    #5

    @VRonin said in Configure QSettings ((QSettings::Format and QSettings::Scope ):

    Just subclass QSettings

    Ugh!
    Can't we have something like this instead?*

    QSettings mySettings()
    {
        return QSettings(QSettings::IniFormat, QSettings::UserScope, QStringLiteral(...));
    }
    

    *c++17 and later

    Use directly on initialization:

    QSettings settings = mySettings();
    

    Read and abide by the Qt Code of Conduct

    J.HilkJ 1 Reply Last reply
    2
    • VRoninV Offline
      VRoninV Offline
      VRonin
      wrote on last edited by
      #6

      @kshegunov said in Configure QSettings ((QSettings::Format and QSettings::Scope ):

      Can't we have something like this instead?*

      Potato/Potatoe

      "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
      ~Napoleon Bonaparte

      On a crusade to banish setIndexWidget() from the holy land of Qt

      kshegunovK 1 Reply Last reply
      0
      • VRoninV VRonin

        @kshegunov said in Configure QSettings ((QSettings::Format and QSettings::Scope ):

        Can't we have something like this instead?*

        Potato/Potatoe

        kshegunovK Offline
        kshegunovK Offline
        kshegunov
        Moderators
        wrote on last edited by
        #7

        @VRonin said in Configure QSettings ((QSettings::Format and QSettings::Scope ):

        Potato/Potatoe

        The point is to avoid type proliferation, I know you know that's a thing. Why derive anything if you don't have to; you're not changing any behavior here!

        Read and abide by the Qt Code of Conduct

        1 Reply Last reply
        0
        • kshegunovK kshegunov

          @VRonin said in Configure QSettings ((QSettings::Format and QSettings::Scope ):

          Just subclass QSettings

          Ugh!
          Can't we have something like this instead?*

          QSettings mySettings()
          {
              return QSettings(QSettings::IniFormat, QSettings::UserScope, QStringLiteral(...));
          }
          

          *c++17 and later

          Use directly on initialization:

          QSettings settings = mySettings();
          
          J.HilkJ Online
          J.HilkJ Online
          J.Hilk
          Moderators
          wrote on last edited by
          #8

          @kshegunov don't you still need a class for this, or do you advocate a global free floating function here?


          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.

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

            @kshegunov don't you still need a class for this, or do you advocate a global free floating function here?

            kshegunovK Offline
            kshegunovK Offline
            kshegunov
            Moderators
            wrote on last edited by kshegunov
            #9

            @J-Hilk said in Configure QSettings ((QSettings::Format and QSettings::Scope ):

            @kshegunov don't you still need a class for this, or do you advocate a global free floating function here?

            A normal C-like function, inline-d ideally. Why would you make a class for this?

            Read and abide by the Qt Code of Conduct

            SGaistS 1 Reply Last reply
            1
            • kshegunovK kshegunov

              @J-Hilk said in Configure QSettings ((QSettings::Format and QSettings::Scope ):

              @kshegunov don't you still need a class for this, or do you advocate a global free floating function here?

              A normal C-like function, inline-d ideally. Why would you make a class for this?

              SGaistS Offline
              SGaistS Offline
              SGaist
              Lifetime Qt Champion
              wrote on last edited by SGaist
              #10

              @kshegunov you can't as QSettings is a QObject.

              It does work with C++17, see @kshegunov answer below.

              Interested in AI ? www.idiap.ch
              Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

              kshegunovK 1 Reply Last reply
              0
              • Chris KawaC Offline
                Chris KawaC Offline
                Chris Kawa
                Lifetime Qt Champion
                wrote on last edited by
                #11

                @hbatalha QSettings has static setDefaultFormat that you can call along those other set* functions, so the only part missing is the default scope, but it's not so bad I think?

                QSettings settings(QSettings::SystemScope);
                

                It does feel like it would be kinda completing the API nicely if there was also something like static QSettings::setDefaultScope(QSettings::Scope). You could file a feature request on bugreports.qt.io if that's something you'd like to see in future versions.

                H 1 Reply Last reply
                3
                • SGaistS SGaist

                  @kshegunov you can't as QSettings is a QObject.

                  It does work with C++17, see @kshegunov answer below.

                  kshegunovK Offline
                  kshegunovK Offline
                  kshegunov
                  Moderators
                  wrote on last edited by kshegunov
                  #12

                  @SGaist said in Configure QSettings ((QSettings::Format and QSettings::Scope ):

                  @kshegunov you can't as QSettings is a QObject.

                  Au contraire mon ami! Excuse the bad friench, but the point is C++17 mandates RVO, so this compiles and runs correctly with g++. You don't make no copies here.

                  Read and abide by the Qt Code of Conduct

                  1 Reply Last reply
                  0
                  • SGaistS Offline
                    SGaistS Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on last edited by
                    #13

                    The French part is completely correct :-)
                    I missed the C++17 bits. My bad !

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    kshegunovK 1 Reply Last reply
                    1
                    • SGaistS SGaist

                      The French part is completely correct :-)
                      I missed the C++17 bits. My bad !

                      kshegunovK Offline
                      kshegunovK Offline
                      kshegunov
                      Moderators
                      wrote on last edited by
                      #14

                      @SGaist said in Configure QSettings ((QSettings::Format and QSettings::Scope ):

                      The French part is completely correct :-)

                      Good that my initial (and rather inexcusable) error was caught on time ;)

                      Read and abide by the Qt Code of Conduct

                      1 Reply Last reply
                      1
                      • Chris KawaC Chris Kawa

                        @hbatalha QSettings has static setDefaultFormat that you can call along those other set* functions, so the only part missing is the default scope, but it's not so bad I think?

                        QSettings settings(QSettings::SystemScope);
                        

                        It does feel like it would be kinda completing the API nicely if there was also something like static QSettings::setDefaultScope(QSettings::Scope). You could file a feature request on bugreports.qt.io if that's something you'd like to see in future versions.

                        H Offline
                        H Offline
                        hbatalha
                        wrote on last edited by
                        #15

                        @Chris-Kawa said in Configure QSettings ((QSettings::Format and QSettings::Scope ):

                        QSettings has static setDefaultFormat that you can call along those other set* functions, so the only part missing is the default scope, but it's not so bad I think?

                        That's a good idea, I read it in the doc but misunderstood its role. I will try this approach and @kshegunov's answer and get back to you.

                        1 Reply Last reply
                        1

                        • Login

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