Change items in a container (e.g. QList)
-
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?@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 &) -
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?
@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) -
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 ?
-
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)
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. :) -
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?
@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 :)
- BTW, why cant i mark the thread solved?