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. QVariant to QList
Forum Updated to NodeBB v4.3 + New Features

QVariant to QList

Scheduled Pinned Locked Moved Solved General and Desktop
c++model
13 Posts 3 Posters 2.8k 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.
  • JoeCFDJ Offline
    JoeCFDJ Offline
    JoeCFD
    wrote on last edited by
    #2

    It seems that value.toList() returns QList<QVariant>, not QList<QString>. You may need explicit conversion.

    1 Reply Last reply
    0
    • mzimmersM Offline
      mzimmersM Offline
      mzimmers
      wrote on last edited by
      #3

      This doesn't work either:

      QList<QString> qls = static_cast<QList<QString>>(value.toList());
      

      I think I'm overlooking something fairly basic here.

      JoeCFDJ JonBJ 2 Replies Last reply
      0
      • mzimmersM mzimmers

        This doesn't work either:

        QList<QString> qls = static_cast<QList<QString>>(value.toList());
        

        I think I'm overlooking something fairly basic here.

        JoeCFDJ Offline
        JoeCFDJ Offline
        JoeCFD
        wrote on last edited by
        #4

        @mzimmers said in QVariant to QList:

        QList<QString> qls = static_cast<QList<QString>>(value.toList());

        I am not sure static_cast works. Can you try to convert one after another with toString() in the list?

        1 Reply Last reply
        1
        • mzimmersM mzimmers

          This doesn't work either:

          QList<QString> qls = static_cast<QList<QString>>(value.toList());
          

          I think I'm overlooking something fairly basic here.

          JonBJ Offline
          JonBJ Offline
          JonB
          wrote on last edited by JonB
          #5

          @mzimmers
          I don't think a list of variants is/can be the same thing as a list of strings, or converted between the two/treated as such? (A QVariant cannot be a QString, it can only contain one.) My thought is you would want to iterate, appending each element?
          Note that this is purely a guess as I read this :)

          mzimmersM 1 Reply Last reply
          1
          • JonBJ JonB

            @mzimmers
            I don't think a list of variants is/can be the same thing as a list of strings, or converted between the two/treated as such? (A QVariant cannot be a QString, it can only contain one.) My thought is you would want to iterate, appending each element?
            Note that this is purely a guess as I read this :)

            mzimmersM Offline
            mzimmersM Offline
            mzimmers
            wrote on last edited by mzimmers
            #6

            @JonB I think you're saying basically the same thing that @JoeCFD is, and I think you're both right.

            But I still don't know how to cast/convert my QVariant value into a QString (or a QList<QString>).

            EDIT: though this comes close:

                        for (QString qs : value.toStringList()) {
                            item.equipment.append(qs);
                        }
            

            EDIT 2: which means this comes even closer:

                    case EquipmentRole:
                        item.equipment.clear();
                        item.equipment.append(value.toStringList());
            
            JoeCFDJ 1 Reply Last reply
            0
            • mzimmersM mzimmers

              @JonB I think you're saying basically the same thing that @JoeCFD is, and I think you're both right.

              But I still don't know how to cast/convert my QVariant value into a QString (or a QList<QString>).

              EDIT: though this comes close:

                          for (QString qs : value.toStringList()) {
                              item.equipment.append(qs);
                          }
              

              EDIT 2: which means this comes even closer:

                      case EquipmentRole:
                          item.equipment.clear();
                          item.equipment.append(value.toStringList());
              
              JoeCFDJ Offline
              JoeCFDJ Offline
              JoeCFD
              wrote on last edited by
              #7

              @mzimmers item.equipment.append(value.toStringList()); is a good one. Does it work?

              mzimmersM 1 Reply Last reply
              1
              • JoeCFDJ JoeCFD

                @mzimmers item.equipment.append(value.toStringList()); is a good one. Does it work?

                mzimmersM Offline
                mzimmersM Offline
                mzimmers
                wrote on last edited by mzimmers
                #8

                @JoeCFD I can't tell for sure until I can expose this in QML, but I'm fairly sure it's working. I'll ask my other question in the QML forum.

                Thanks for the help, guys.

                EDIT: yeah, it seems to have worked.

                JoeCFDJ 1 Reply Last reply
                0
                • mzimmersM mzimmers

                  @JoeCFD I can't tell for sure until I can expose this in QML, but I'm fairly sure it's working. I'll ask my other question in the QML forum.

                  Thanks for the help, guys.

                  EDIT: yeah, it seems to have worked.

                  JoeCFDJ Offline
                  JoeCFDJ Offline
                  JoeCFD
                  wrote on last edited by JoeCFD
                  #9

                  @mzimmers

                  got this from ChatGPT and you are good.
                  if (variant.canConvert<QStringList>()) {
                  QList<QString> stringList = variant.toStringList();
                  }

                  mzimmersM JonBJ 2 Replies Last reply
                  1
                  • JoeCFDJ JoeCFD

                    @mzimmers

                    got this from ChatGPT and you are good.
                    if (variant.canConvert<QStringList>()) {
                    QList<QString> stringList = variant.toStringList();
                    }

                    mzimmersM Offline
                    mzimmersM Offline
                    mzimmers
                    wrote on last edited by
                    #10

                    @JoeCFD yeah, I saw the canConvert() method in the docs, but forgot to add it to my code. Thanks for the reminder.

                    1 Reply Last reply
                    0
                    • JoeCFDJ JoeCFD

                      @mzimmers

                      got this from ChatGPT and you are good.
                      if (variant.canConvert<QStringList>()) {
                      QList<QString> stringList = variant.toStringList();
                      }

                      JonBJ Offline
                      JonBJ Offline
                      JonB
                      wrote on last edited by
                      #11

                      @JoeCFD said in QVariant to QList:

                      got this from ChatGPT

                      Depressing! :(

                      1 Reply Last reply
                      0
                      • JoeCFDJ Offline
                        JoeCFDJ Offline
                        JoeCFD
                        wrote on last edited by JoeCFD
                        #12

                        Understand. Think about you can never be the number 1 or even close anymore if you play chess.

                        mzimmersM 1 Reply Last reply
                        0
                        • JoeCFDJ JoeCFD

                          Understand. Think about you can never be the number 1 or even close anymore if you play chess.

                          mzimmersM Offline
                          mzimmersM Offline
                          mzimmers
                          wrote on last edited by
                          #13

                          @JoeCFD said in QVariant to QList:

                          Understand. Thiink about you can never be number 1 anymore if you play chess.

                          Oddly enough, that was never a concern of mine.

                          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