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. Problem with QMap
Forum Updated to NodeBB v4.3 + New Features

Problem with QMap

Scheduled Pinned Locked Moved Solved General and Desktop
qmap
15 Posts 3 Posters 6.0k 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
    #4

    Ok, it does look perfect valid.

    have you tried
    qDebug() << size(); (in ctor)
    and
    qDebug() << par.size(); (right after u define par)

    C 1 Reply Last reply
    1
    • mrjjM mrjj

      Ok, it does look perfect valid.

      have you tried
      qDebug() << size(); (in ctor)
      and
      qDebug() << par.size(); (right after u define par)

      C Offline
      C Offline
      cristiano.narcisi
      wrote on last edited by
      #5

      Ok. But what does it happen when the function is contains(..key..)?

      mrjjM 1 Reply Last reply
      0
      • C cristiano.narcisi

        Ok. But what does it happen when the function is contains(..key..)?

        mrjjM Offline
        mrjjM Offline
        mrjj
        Lifetime Qt Champion
        wrote on last edited by
        #6

        @cristiano.narcisi
        it looks like outside of constructor the key list is no more.
        i wanted to see if it says
        zero for par.

        C 1 Reply Last reply
        1
        • mrjjM mrjj

          @cristiano.narcisi
          it looks like outside of constructor the key list is no more.
          i wanted to see if it says
          zero for par.

          C Offline
          C Offline
          cristiano.narcisi
          wrote on last edited by
          #7

          @mrjj

          Ok but it is very strange. I give you another information: i can view all the key-value pair stored into the par variable using the watches of the editor!!!!

          mrjjM 1 Reply Last reply
          1
          • C cristiano.narcisi

            @mrjj

            Ok but it is very strange. I give you another information: i can view all the key-value pair stored into the par variable using the watches of the editor!!!!

            mrjjM Offline
            mrjjM Offline
            mrjj
            Lifetime Qt Champion
            wrote on last edited by
            #8

            @cristiano.narcisi
            OK ?!?! That also pretty strange.

            what about size inside and out?

            C 1 Reply Last reply
            0
            • mrjjM mrjj

              @cristiano.narcisi
              OK ?!?! That also pretty strange.

              what about size inside and out?

              C Offline
              C Offline
              cristiano.narcisi
              wrote on last edited by
              #9

              @mrjj

              Size outside the ctor is correct. It is 5!!!

              mrjjM 1 Reply Last reply
              1
              • C Offline
                C Offline
                cristiano.narcisi
                wrote on last edited by
                #10

                Using the iteartor i can view all the values stored in the QMap .... Probably i don't understand something of very important about how QMap acceses the data.
                //your code here

                 QMap<const char *, QString>::ConstIterator ii;
                 for( ii = par.constBegin(); ii != par.constEnd(); ++ii )
                   qDebug() << ii.key() << " = " << ii.value();```
                
                1 Reply Last reply
                0
                • C cristiano.narcisi

                  @mrjj

                  Size outside the ctor is correct. It is 5!!!

                  mrjjM Offline
                  mrjjM Offline
                  mrjj
                  Lifetime Qt Champion
                  wrote on last edited by
                  #11

                  @cristiano.narcisi
                  ok ?!?

                  I think you should try dump the list using par to see if key corruption
                  else there is no reason contains should not work.

                  C 1 Reply Last reply
                  0
                  • mrjjM mrjj

                    @cristiano.narcisi
                    ok ?!?

                    I think you should try dump the list using par to see if key corruption
                    else there is no reason contains should not work.

                    C Offline
                    C Offline
                    cristiano.narcisi
                    wrote on last edited by
                    #12

                    @mrjj

                    Probably i have understood why i can retry the key. The problem is that i am using

                    QMap< const char *, QString> 
                    

                    This means that the key is a POINTER and not the text !!!

                    I have replaced the QMap template with

                    QMap< QString, QString>
                    

                    Now the key is an ITEM and not a POINTER and i can find all the keys and the value stored within the QMap.

                    Sorry for bothering you

                    Thanks for hepling me

                    Regards

                    Cristiano Narcisi

                    mrjjM 1 Reply Last reply
                    2
                    • mrjjM mrjj

                      @cristiano.narcisi said:

                      QMap

                      Hi
                      can you show the cpp of the constructor also?
                      How you add the items.

                      Inheriting from Qmap is a bit funky for me as with STL that was normally
                      not super idea. but i dont know with QList. :)

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

                      @mrjj

                      Inheriting from Qmap is a bit funky

                      It's specially noted in the docs that deriving from a container specialization is not recommended. That's probably what seems funky ;)

                      Read and abide by the Qt Code of Conduct

                      1 Reply Last reply
                      1
                      • C cristiano.narcisi

                        @mrjj

                        Probably i have understood why i can retry the key. The problem is that i am using

                        QMap< const char *, QString> 
                        

                        This means that the key is a POINTER and not the text !!!

                        I have replaced the QMap template with

                        QMap< QString, QString>
                        

                        Now the key is an ITEM and not a POINTER and i can find all the keys and the value stored within the QMap.

                        Sorry for bothering you

                        Thanks for hepling me

                        Regards

                        Cristiano Narcisi

                        mrjjM Offline
                        mrjjM Offline
                        mrjj
                        Lifetime Qt Champion
                        wrote on last edited by
                        #14

                        @cristiano.narcisi
                        ok so
                        #define MAC_KEY "mac"
                        used as key did funky stuff?

                        good found :)

                        kshegunovK 1 Reply Last reply
                        0
                        • mrjjM mrjj

                          @cristiano.narcisi
                          ok so
                          #define MAC_KEY "mac"
                          used as key did funky stuff?

                          good found :)

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

                          @mrjj said:

                          used as key did funky stuff?

                          The only funky stuff with that macro is that char * doesn't have a meaningful operator <, which is required for it to be a key in the map. The comparison is done as you'd compare integers.

                          Read and abide by the Qt Code of Conduct

                          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