Op 1-2-2013 10:57, Bache-Wiig Jens schreef: > On Feb 1, 2013, at 10:16 AM, André Somers <an...@familiesomers.nl> wrote: > >> Op 1-2-2013 9:43, Bache-Wiig Jens schreef: >>> On Feb 1, 2013, at 8:52 AM, Иван Комиссаров <abba...@gmail.com> wrote: >>> >>>> Hello. I'm trying to implement a delegate with >>>> QTextOption::WrapAtWordBoundaryOrAnywhere. I copied QItemDelegate and >>>> replaced QTextOption::WordWrap where needed. Also i made small fix for >>>> sizeHint() calculation. Everything is ok, except that QItemDelegate >>>> doesn't look native:) >>> I don' know if it will resolve this particular issue, but QItemDelegate was >>> superseded by QStyledItemDelegate for exactly that reason. I would suggest >>> trying that instead. >>> >>> http://qt-project.org/doc/qt-4.8/qstyleditemdelegate.html >>> >> Actually, I found that QStyledItemDelegate makes it even _harder_ to do >> this. Where QItemDelegate had a range of virtual protected functions >> that were responsible for drawing part of the delegate (so you could >> easily opt to only re-implement one and simply re-use the rest) >> QStyledItemDelegate doesn't help you with the rendering of these kinds >> of elements at all. You're just left to your own devices, using ugly >> hacks to get the base implementation to do part of the rendering for you. > You are right in that they both have their uses so calling it "superseded" > was inaccurate. They are both available in the API. If you truly want to > customise the entire delegate, including the branch indicators and selection > color / behavior, QItemDelegate is what you want. > > On the other hand if you primarily want to respect the native look and feel > or a style sheet, you should try to use QStyledItemDelegate. It gives you > less control but generally looks more native. The main difference is that you > then only get to control the text or icon layout and/or the editor widget. In > this particular case it sounds like this is what the user needs. > That's the point: you can't even make simple modifications like that. At least, I don't see it. I'm curious how you are going to change the layout and rendering of the text and icon using QStyledItemDelegate, and keep the standard look for the rest of it? I've used the model view stuff in Qt quite a lot, and I don't see it. Not without using an ungly hack.
The hack I used was that my QStyledItemDelegate-derived delegate actually contains a model like this: QStringList list; list << QString(); QStringListModel* fakeModel = new QStringListModel(list); Then, in my paint method, I render my content and instead of calling the base class implementation with the same arguments as my own paint method was called with, I replace the model index argument with fakeModel->index(0,0); Otherwise, I see no easy way to convice QStyledItemModel that I will take care of rendering the contents of the cell, as long as QStyledItemDelegate takes care of rendering the rest. And my contents I mean more than just the text. For just the text, you can reimplement displayText to return an empty string. Not so for images, as far as I see. However, I am very curious how you would do this. You're much, much more familiar with the style and rendering code than I am, I may be overlooking the obvious here... André _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest