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.11 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
    #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