Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. [SOLVED] Reading QColor from an INI file
Qt 6.12 LTS is out! See what's new in the release blog

[SOLVED] Reading QColor from an INI file

Scheduled Pinned Locked Moved General and Desktop
25 Posts 3 Posters 23.6k 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.
  • A Offline
    A Offline
    astodolski
    wrote on last edited by
    #8

    [quote author="Subst27" date="1421077722"]in Assistant

    An ARGB quadruplet on the format #AARRGGBB, equivalent to an unsigned int.
    [/quote]

    So the entry in the INI file then would be:

    @
    MarkerColor= @QRgb(#00000080)
    @

    OR

    @
    MarkerColor= #00000080
    @

    1 Reply Last reply
    0
    • A Offline
      A Offline
      astodolski
      wrote on last edited by
      #9

      [quote author="Subst27" date="1421077722"]in Assistant

      An ARGB quadruplet on the format #AARRGGBB, equivalent to an unsigned int.
      [/quote]

      So the entry in the INI file then would be:

      @
      MarkerColor= @QRgb(#00000080)
      @

      OR

      @
      MarkerColor= #00000080
      @

      1 Reply Last reply
      0
      • A Offline
        A Offline
        astodolski
        wrote on last edited by
        #10

        [quote author="Subst27" date="1421077934"]why?

        really possible.

        you can read value as string and then analyze it whith RegExp

        [/quote]

        As string? Didn't consider that. OK. I'll try that

        1 Reply Last reply
        0
        • S Offline
          S Offline
          Subst27
          wrote on last edited by
          #11

          MarkerColor= #00000080

          It seems the obvious and the apply the toHex()

          1 Reply Last reply
          0
          • S Offline
            S Offline
            Subst27
            wrote on last edited by
            #12

            whith the string like QColor(R,G,B)

            you can remove QColor and brackets and then whis split(",") take the Red,Green and Blue values of your color

            1 Reply Last reply
            0
            • A Offline
              A Offline
              astodolski
              wrote on last edited by
              #13

              [quote author="Subst27" date="1421078199"]MarkerColor= #00000080

              It seems the obvious and the apply the toHex()[/quote]

              toHex() isn't available in this context.

              1 Reply Last reply
              0
              • S Offline
                S Offline
                Subst27
                wrote on last edited by
                #14

                try to remove # sign

                it's issuer of syntax

                from Assistant

                QByteArray QByteArray::​toHex() const

                Returns a hex encoded copy of the byte array. The hex encoding uses the numbers 0-9 and the letters a-f.

                1 Reply Last reply
                0
                • A Offline
                  A Offline
                  astodolski
                  wrote on last edited by
                  #15

                  [quote author="Subst27" date="1421078846"]try to remove # sign

                  it's issuer of syntax

                  from Assistant

                  QByteArray QByteArray::​toHex() const

                  Returns a hex encoded copy of the byte array. The hex encoding uses the numbers 0-9 and the letters a-f.
                  [/quote]

                  It is unclear what you are trying to illustrate.

                  Perhaps a trivial example?

                  1 Reply Last reply
                  0
                  • S Offline
                    S Offline
                    Subst27
                    wrote on last edited by
                    #16

                    can you wait some minutes?

                    1 Reply Last reply
                    0
                    • A Offline
                      A Offline
                      astodolski
                      wrote on last edited by
                      #17

                      [quote author="Subst27" date="1421079781"]can you wait some minutes?[/quote]

                      Of course

                      1 Reply Last reply
                      0
                      • S Offline
                        S Offline
                        Subst27
                        wrote on last edited by
                        #18

                        I found better variant

                        in INI

                        [common]
                        color=#FF0000

                        result

                        "#FF0000"
                        16711680
                        QColor(ARGB 1, 1, 0, 0)

                        look code in next message

                        1 Reply Last reply
                        0
                        • S Offline
                          S Offline
                          Subst27
                          wrote on last edited by
                          #19

                          @QSettings settings(qApp->applicationDirPath()+"/color.ini",QSettings::IniFormat);

                          QColor color;
                          settings.beginGroup("common");
                          QString string=settings.value("color","#0000FF").toString();
                          qDebug()<<string;
                          string.remove(0,1);
                          bool ok;
                          uint value=string.toUInt(&ok,16);
                          qDebug()<<value;
                          color=QColor::fromRgb(value);
                          qDebug()<<color;@

                          1 Reply Last reply
                          0
                          • A Offline
                            A Offline
                            andre
                            wrote on last edited by
                            #20

                            I'd add a bit more checking of the input. Before removing the first character, check if it actually is a # sign. And check if the length of the rest is what you expect (6 characters for a 3x8bit color).

                            1 Reply Last reply
                            0
                            • S Offline
                              S Offline
                              Subst27
                              wrote on last edited by
                              #21

                              [quote author="Andre" date="1421081171"]I'd add a bit more checking of the input. Before removing the first character, check if it actually is a # sign. And check if the length of the rest is what you expect (6 characters for a 3x8bit color).[/quote]

                              well.
                              I've just wrote the principal solve

                              1 Reply Last reply
                              0
                              • A Offline
                                A Offline
                                astodolski
                                wrote on last edited by
                                #22

                                [quote author="Andre" date="1421081171"]I'd add a bit more checking of the input. Before removing the first character, check if it actually is a # sign. And check if the length of the rest is what you expect (6 characters for a 3x8bit color).[/quote]

                                Thanks as always @Andre and especially thanks to @Subst27! I will mark this Solved for now but will need to refine it a bit

                                1 Reply Last reply
                                0
                                • A Offline
                                  A Offline
                                  andre
                                  wrote on last edited by
                                  #23

                                  [quote author="Subst27" date="1421081450"]
                                  [quote author="Andre" date="1421081171"]I'd add a bit more checking of the input. Before removing the first character, check if it actually is a # sign. And check if the length of the rest is what you expect (6 characters for a 3x8bit color).[/quote]

                                  well.
                                  I've just wrote the principal solve[/quote]

                                  Yes, of course. But reading an ini file is essentially user imput, so I think input checking should not be just an afterthought. That's why I mentioned it.

                                  1 Reply Last reply
                                  0
                                  • S Offline
                                    S Offline
                                    Subst27
                                    wrote on last edited by
                                    #24

                                    sure u are right

                                    for this purpose global better to define T QVariant::​value() const for QColor
                                    :)
                                    and problem die away. :)

                                    Well! I see you

                                    1 Reply Last reply
                                    0
                                    • A Offline
                                      A Offline
                                      astodolski
                                      wrote on last edited by
                                      #25

                                      I just wanted to add what I think is a better solution - at least for me. The issue was centered around the proper forming of the key in the input file which if not done correctly yielded a Invalid color status for the QColor. I went back to reading the value in as a number - not a string.

                                      @
                                      [Testing]
                                      MarkerColor=#800000
                                      @

                                      and in code:
                                      @
                                      m_MarkerColor = IniSettings.value("Testing/MarkerColor").value<QColor>();
                                      @

                                      Sincere thanks to all who have assisted and contributed.

                                      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
                                      • Unsolved