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. Why i can't change color of QString?
Qt 6.11 is out! See what's new in the release blog

Why i can't change color of QString?

Scheduled Pinned Locked Moved Unsolved General and Desktop
46 Posts 7 Posters 22.9k Views 2 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.
  • mrjjM Offline
    mrjjM Offline
    mrjj
    Lifetime Qt Champion
    wrote on last edited by
    #15

    Hi
    As @raven-worx says, a QAbstractListModel would be the cleanest solution.

    You could also cheat and do.

      QStringList StrList{"test" , "test2" , "test3" };
    
        QStandardItemModel *model = new QStandardItemModel (StrList.size(), 1);
        for (int row = 0; row < StrList.size(); ++row) {
            QStandardItem *item = new QStandardItem(QString("row %0").arg(row));
            model->setItem(row, 0, item);
        }
    
        ui->comboBox->setModel(model);
    
        model->setData( model->index(0, 0), QColor(255, 0, 0), Qt::TextColorRole );
        model->setData( model->index(1, 0), QColor(0, 255, 0), Qt::TextColorRole );
    
    

    alt text

    1 Reply Last reply
    6
    • EngelardE Offline
      EngelardE Offline
      Engelard
      wrote on last edited by Engelard
      #16

      Thanks @raven-worx && @mrjj for help. It is like 8-times more code now, i can't rly understand why it don't work with simple QStringListModel, but it is at least some success today.

      It change color in list of ComboBox, but not in actual CB, in @mrjj screenshot such thing also present:
      0_1553813858135_qttttt.jpg

      P.S. in my initial priority was to display colored in mainWidget of ComboBox rather then in opened list.

      1 Reply Last reply
      0
      • mrjjM Offline
        mrjjM Offline
        mrjj
        Lifetime Qt Champion
        wrote on last edited by
        #17

        Hi

        • i can't rly understand why it don't work with simple QStringListModel

        Well @raven-worx was kind enough to show the source
        so we can see how QStringListModel works

        QVariant QStringListModel::data(const QModelIndex &index, int role) const
        {
            if (index.row() < 0 || index.row() >= lst.size())
                return QVariant();
        
            if (role == Qt::DisplayRole || role == Qt::EditRole)
                return lst.at(index.row());
        
            return QVariant();
        }
        
        

        The data function of a model IS the place where it returns the data for the roles so we can see
        it only really uses (role == Qt::DisplayRole || role == Qt::EditRole) and
        we want it to also use Qt::ForegroundRole.

        1 Reply Last reply
        2
        • VRoninV Offline
          VRoninV Offline
          VRonin
          wrote on last edited by VRonin
          #18

          I made a proxy model to support roles in models that don't https://github.com/VSRonin/QtModelUtilities the class is called RoleMaskProxyModel. Here is an example that uses it to colour QStringListModel: https://github.com/VSRonin/QtModelUtilities/blob/1.0.0/examples/exam_RoleMaskProxyModel/exam_rolemaskhighlight.cpp

          Hopefully I'll eventually find the time to complete adding that class to Qt: https://codereview.qt-project.org/#/c/245572/

          "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

          EngelardE 1 Reply Last reply
          2
          • VRoninV VRonin

            I made a proxy model to support roles in models that don't https://github.com/VSRonin/QtModelUtilities the class is called RoleMaskProxyModel. Here is an example that uses it to colour QStringListModel: https://github.com/VSRonin/QtModelUtilities/blob/1.0.0/examples/exam_RoleMaskProxyModel/exam_rolemaskhighlight.cpp

            Hopefully I'll eventually find the time to complete adding that class to Qt: https://codereview.qt-project.org/#/c/245572/

            EngelardE Offline
            EngelardE Offline
            Engelard
            wrote on last edited by Engelard
            #19

            @VRonin Looks very interesting.
            I downloaded your rolemaskproxymodel and classes related to it(whole src directory), but when i tried to Run i got such strange stuff:

            0_1553856387649_sdfsdf.jpg
            Oh and don't look at first two errors, they unrelated completelly, it appears when i swap compiler to Release mode, did'nt figure out what it is yet.

            1 Reply Last reply
            0
            • VRoninV Offline
              VRoninV Offline
              VRonin
              wrote on last edited by VRonin
              #20

              If you just copy-paste the code you have to add DEFINES += MODELUTILITIES_STATIC to your .pro file

              "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

              EngelardE 1 Reply Last reply
              1
              • VRoninV VRonin

                If you just copy-paste the code you have to add DEFINES += MODELUTILITIES_STATIC to your .pro file

                EngelardE Offline
                EngelardE Offline
                Engelard
                wrote on last edited by
                #21

                @VRonin ye, first time tried to use someone elses code :D
                Now i downloaded whole stuff like a normal person. Look at my post with screenshot above.

                1 Reply Last reply
                0
                • VRoninV Offline
                  VRoninV Offline
                  VRonin
                  wrote on last edited by VRonin
                  #22

                  Exact same answer.
                  There's a section in the readme that explains how to use the library: https://vsronin.github.io/QtModelUtilities/md__i_n_s_t_a_l_l.html

                  "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

                  EngelardE 1 Reply Last reply
                  1
                  • VRoninV VRonin

                    Exact same answer.
                    There's a section in the readme that explains how to use the library: https://vsronin.github.io/QtModelUtilities/md__i_n_s_t_a_l_l.html

                    EngelardE Offline
                    EngelardE Offline
                    Engelard
                    wrote on last edited by
                    #23

                    @VRonin I added that macro to .pro file and nothing changed, same 4 errors.

                    1 Reply Last reply
                    0
                    • VRoninV Offline
                      VRoninV Offline
                      VRonin
                      wrote on last edited by
                      #24

                      You have to manually click on build-> rerun qmake every time you change something in the .pro file

                      "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

                      EngelardE 1 Reply Last reply
                      1
                      • VRoninV VRonin

                        You have to manually click on build-> rerun qmake every time you change something in the .pro file

                        EngelardE Offline
                        EngelardE Offline
                        Engelard
                        wrote on last edited by
                        #25

                        @VRonin of course i did that. Still same 4 errors

                        1 Reply Last reply
                        0
                        • VRoninV Offline
                          VRoninV Offline
                          VRonin
                          wrote on last edited by
                          #26

                          let's do it manually then: remove all the MODELUTILITIES_EXPORT

                          "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

                          EngelardE 1 Reply Last reply
                          0
                          • VRoninV VRonin

                            let's do it manually then: remove all the MODELUTILITIES_EXPORT

                            EngelardE Offline
                            EngelardE Offline
                            Engelard
                            wrote on last edited by
                            #27

                            @VRonin said in Why i can't change color of QString?:

                            MODELUTILITIES_EXPORT

                            How? you mean edit your src files?

                            1 Reply Last reply
                            0
                            • VRoninV Offline
                              VRoninV Offline
                              VRonin
                              wrote on last edited by
                              #28

                              yep!
                              All DEFINES += MODELUTILITIES_STATIC does is transforming MODELUTILITIES_EXPORT into an empty string. if that doesn't work then just manually do a find and replace

                              "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

                              EngelardE 1 Reply Last reply
                              0
                              • VRoninV VRonin

                                yep!
                                All DEFINES += MODELUTILITIES_STATIC does is transforming MODELUTILITIES_EXPORT into an empty string. if that doesn't work then just manually do a find and replace

                                EngelardE Offline
                                EngelardE Offline
                                Engelard
                                wrote on last edited by
                                #29

                                @VRonin oKay. In what files that stuff which i should to replace? I only can assume that such stuff MODELUTILITIES_EXPORT is macro, so it must be in some .h files, right?

                                1 Reply Last reply
                                0
                                • VRoninV Offline
                                  VRoninV Offline
                                  VRonin
                                  wrote on last edited by VRonin
                                  #30

                                  Actually, it probably just easier to replace the entire modelutilities_global.h with

                                  #ifndef modelutilities_global_h__
                                  #define modelutilities_global_h__
                                  #define MODELUTILITIES_EXPORT
                                  #endif // modelutilities_global_h__
                                  

                                  "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

                                  EngelardE 1 Reply Last reply
                                  0
                                  • VRoninV VRonin

                                    Actually, it probably just easier to replace the entire modelutilities_global.h with

                                    #ifndef modelutilities_global_h__
                                    #define modelutilities_global_h__
                                    #define MODELUTILITIES_EXPORT
                                    #endif // modelutilities_global_h__
                                    
                                    EngelardE Offline
                                    EngelardE Offline
                                    Engelard
                                    wrote on last edited by
                                    #31

                                    @VRonin Done. But still that four errors(

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

                                      Hi,

                                      Do you mean the symbol missing error ?

                                      Did you build @VRonin library statically ?

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

                                      EngelardE 1 Reply Last reply
                                      0
                                      • SGaistS SGaist

                                        Hi,

                                        Do you mean the symbol missing error ?

                                        Did you build @VRonin library statically ?

                                        EngelardE Offline
                                        EngelardE Offline
                                        Engelard
                                        wrote on last edited by
                                        #33

                                        @SGaist said in Why i can't change color of QString?:

                                        Did you build @VRonin library statically ?

                                        0_1553942357112_statt.jpg

                                        @SGaist said in Why i can't change color of QString?:

                                        Do you mean the symbol missing error ?

                                        0_1553942408999_errr.jpg

                                        I tried multiple times: Build>Clean all>Run qmake>Rebuild all.

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

                                          Do you have a .dll file matching that library ?

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

                                          EngelardE 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