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. Change items in a container (e.g. QList)

Change items in a container (e.g. QList)

Scheduled Pinned Locked Moved Solved General and Desktop
19 Posts 3 Posters 3.8k Views
  • 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.
  • M Offline
    M Offline
    Maser
    wrote on last edited by Maser
    #3

    it is

    QList<MyClass> *list = new QList<MyClass>
    

    and when im doing mylist[index].setSomeValue(); is says there is no member named setSomeValue

    jsulmJ 1 Reply Last reply
    0
    • mrjjM Offline
      mrjjM Offline
      mrjj
      Lifetime Qt Champion
      wrote on last edited by mrjj
      #4
      class MyClass {
       public:
        void bing() {};
        MyClass() {}
      };
      
        QList<MyClass>* list = new QList<MyClass>;
        MyClass tmp;
        list->append(tmp);
        (*list)[0].bing();
      (delete list;)
      

      Can I ask why you want the list to be a pointer to a list and not just a list?

      1 Reply Last reply
      4
      • M Maser

        it is

        QList<MyClass> *list = new QList<MyClass>
        

        and when im doing mylist[index].setSomeValue(); is says there is no member named setSomeValue

        jsulmJ Online
        jsulmJ Online
        jsulm
        Lifetime Qt Champion
        wrote on last edited by
        #5

        @Maser As @mrjj said: list is a pointer, so you have first to dereference it and then use [] operator:

        (*list)[index].setSomeValue();
        

        https://forum.qt.io/topic/113070/qt-code-of-conduct

        1 Reply Last reply
        2
        • M Offline
          M Offline
          Maser
          wrote on last edited by
          #6

          Ah, thanks. I didnt thought of seting parenthesize the dereferencing.
          Well, all the Qt examples create pointer and then create the container on the heap, dont they?

          mrjjM 1 Reply Last reply
          0
          • M Maser

            Ah, thanks. I didnt thought of seting parenthesize the dereferencing.
            Well, all the Qt examples create pointer and then create the container on the heap, dont they?

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

            @Maser
            well the normal case if that its a non pointer
            QList<MyClass *> list;

            but you get same situation if u send it as paramater

            void somefunc( QList<MyClass *> * List);

            somefunc(&list);

            so it really depends on what you do with list and how long it must live.
            (note normally it would be &)

            1 Reply Last reply
            1
            • M Offline
              M Offline
              Maser
              wrote on last edited by
              #8

              I dont understand. What QList<MyClass *> list; benefits me? That i only have to create them once? Doesnt QList<MyClass> *list do the same as i create the items on the heap and pass the pointer around?

              mrjjM 1 Reply Last reply
              0
              • M Maser

                I dont understand. What QList<MyClass *> list; benefits me? That i only have to create them once? Doesnt QList<MyClass> *list do the same as i create the items on the heap and pass the pointer around?

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

                @Maser
                hi
                all QWidgets are QObjects.
                QObjects have copy constructor disabled. They cannot be cloned.
                So you cannot have QWidgets in a list if you define it as
                QList<MyClass>
                IT must be pointers.

                However for you own classes, there is no need for pointers.

                QList<MyClass> *list = pointer to list of objects. Not possible with most QWidgets
                QList<MyClass *> *list = pointer to list of pointers to objects. can contain QWidgets
                QList<MyClass> list; Just a list of Myclasses. ( best option normally)

                1 Reply Last reply
                2
                • M Offline
                  M Offline
                  Maser
                  wrote on last edited by Maser
                  #10

                  So this means if i have my class derived from QObject, i can only store them as pointers like QList<MyClass *> *list or QList<MyClass *> list ?

                  mrjjM 1 Reply Last reply
                  1
                  • M Maser

                    So this means if i have my class derived from QObject, i can only store them as pointers like QList<MyClass *> *list or QList<MyClass *> list ?

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

                    @Maser
                    yes correct.

                    1 Reply Last reply
                    0
                    • M Offline
                      M Offline
                      Maser
                      wrote on last edited by
                      #12

                      A, thanks! One more mystery solved)) I already wondered why when i wanted add to MyClass the abilities from QObject something crash down in my program, so i made some workarounds)

                      mrjjM 1 Reply Last reply
                      0
                      • M Maser

                        A, thanks! One more mystery solved)) I already wondered why when i wanted add to MyClass the abilities from QObject something crash down in my program, so i made some workarounds)

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

                        Also, just as note.
                        Most QWidgets takes a parent (another qwidget) in constructor.
                        It means the parent now owns the child and will delete it when it dies it self.

                        So if you have childs in a list and give them to parents,
                        the list should Not delete the childs as the parent will. :)

                        1 Reply Last reply
                        0
                        • M Offline
                          M Offline
                          Maser
                          wrote on last edited by
                          #14

                          Ye, i stil havent had time to go into that stuff with smartpointers and all)

                          mrjjM 1 Reply Last reply
                          0
                          • M Maser

                            Ye, i stil havent had time to go into that stuff with smartpointers and all)

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

                            @Maser
                            well its not so much smart pointers but more a ownership.
                            Must Widgets in Qt can own other widgets and will delete them when deleted.

                            So often even you new a Qwidget you dont need to delete it yourself as parent will.

                            1 Reply Last reply
                            1
                            • M Offline
                              M Offline
                              Maser
                              wrote on last edited by
                              #16

                              Yes, but this is stil related to watching for pointers, if they stil good or deleted somewhere else, doesnt it?

                              BTW, why cant i mark the thread solved?

                              mrjjM 1 Reply Last reply
                              0
                              • M Maser

                                Yes, but this is stil related to watching for pointers, if they stil good or deleted somewhere else, doesnt it?

                                BTW, why cant i mark the thread solved?

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

                                @Maser
                                yes watching pointers is always needed :)

                                • BTW, why cant i mark the thread solved?
                                  You might not have asked it as question.
                                  On first post look in topic tools button.
                                  There is "Ask as Question"
                                  Then you can mark it as solved :)
                                1 Reply Last reply
                                1
                                • M Offline
                                  M Offline
                                  Maser
                                  wrote on last edited by
                                  #18

                                  Tricky) Thanks.

                                  mrjjM 1 Reply Last reply
                                  0
                                  • M Maser

                                    Tricky) Thanks.

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

                                    @Maser
                                    yes its slightly funky :)

                                    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