QStandardItem subclassing?
-
wrote on 18 Jul 2011, 23:02 last edited by
hi,
can any one tell me with a sample code on how to subclass QStandardItem in order to use QStandardItemModel,QtreeView. -
wrote on 19 Jul 2011, 05:31 last edited by
May I ask you what did you try and what didn't work? (And why do you want to subclass QStandardItem at all?)
-
wrote on 19 Jul 2011, 08:40 last edited by
what did you try and what didn’t work?
-
wrote on 20 Jul 2011, 14:10 last edited by
hi all,
never mind i got it. -
wrote on 31 Jul 2012, 07:15 last edited by
Hi, can you please put here a simply code? because i have the same problem as you had
-
wrote on 31 Jul 2012, 07:19 last edited by
How do you know? ManasQt didn't actually describe his problem, nor his solution. I guess the same applies to you as to him: what did you try, and what did not work?
-
wrote on 31 Jul 2012, 07:20 last edited by
Hi Beka,
The post is more than 1 year old. So for the solution you can post your code.
-
wrote on 31 Jul 2012, 07:44 last edited by
I need to override method of QStandardItem operator<(), but thats not the problem, problem is i dont know how to use myItem in models
-
wrote on 31 Jul 2012, 07:49 last edited by
Did you try just adding your own item instance instead of the standard one? What happened?
-
wrote on 31 Jul 2012, 08:01 last edited by
I have subbclassed QStandardItemModel already, so I just try to set in constructor something like this: this->setItemPrototype(new myItem());
-
wrote on 31 Jul 2012, 08:04 last edited by
You normally should not need to subclass QStandardItemModel itself, you should be able to use it without subclassing.
Anyway, your call to setItemPrototype should work. However, did you think to reimplement the QStandardItem::clone() method to return an instance of your own class?
-
wrote on 31 Jul 2012, 08:07 last edited by
Yes, I did it, and i debug if it is called, and it works, but my method operator<() is never called
-
wrote on 31 Jul 2012, 08:19 last edited by
I just tried to create two new myItems and compare them, it works, but thats predictable
but when I called for example myModel->item(r,c)->operator <(other myItem) it isnt called -
wrote on 31 Jul 2012, 08:21 last edited by
Could you show us the signature for that function from your header? Did you happen to forget the const perhaps?
-
wrote on 31 Jul 2012, 08:34 last edited by
@ bool operator <(const myItem &other) const;
virtual myItem *clone() const;@and, after i setItemPrototype, will it take care of retrieving myItem insted of QStandardItem? or i must reimplement or functions which i am working with?
-
wrote on 31 Jul 2012, 08:37 last edited by
Are you sure about that space between operator < ?
And yes, thanks to polymorphism, your own function should be called if it actually is an object of your own type. How do you actually set your items? The prototype is just for editing and things like that. How do you fill your model?
-
wrote on 31 Jul 2012, 08:40 last edited by
no, i delete it
i fill it with functions setItem or setData
-
wrote on 31 Jul 2012, 08:43 last edited by
Show, not tell. It is hard to figure out where the mistake in your code is if you don't show your actual code...
-
wrote on 31 Jul 2012, 08:46 last edited by
yes i know, but the code is really big...
@
myModel->setItem( row, column, new myItem(QIcon(icon), "some text") );
myModel->setData( myModel->index(row, column), "text" );
@ -
wrote on 31 Jul 2012, 08:49 last edited by
So, extract the relevant sections yourself, or create a small, self-contained example that shows the problem. Also, when posting code, please use @ tags around your code section (I already updated your post in this case) to improve readability.
Your code, as far as I can oversee it, looks fine to me. I have no idea why it should fail.