On 11.01.12 14:47:25, Phil Thompson wrote: > On Tue, 10 Jan 2012 21:19:18 +0100, Andreas Pakulat <ap...@gmx.de> wrote: > > On 10.01.12 10:19:13, Phil Thompson wrote: > >> On Tue, 10 Jan 2012 00:11:49 +0100, Andreas Pakulat <ap...@gmx.de> > wrote: > >> > Hi, > >> > > >> > I'd like to customize the display of a model via a > styleditemdelegate, > >> > in particular I want to add a decorating icon depending on some > custom > >> > role from the model. > >> > > >> > As far as I can see the easiest way to do this would be overriding > >> > initStyleOption since then I can set the icon and icon-size directly > on > >> > the option and leave the rest to the standard paint etc. methods. > >> > > >> > Unfortunately it seems this does not work in PyQt, the code is > executed > >> > properly but the icon does not show up in the itemview. Since the > >> > function in C++ takes a pointer to the option-parameter I wonder > wether > >> > this is simply not possible with PyQt or wether I need to go hunting > >> > for > >> > the bug elsewhere? > >> > > >> > Using Qt 4.7.4, sip 4.13 and PyQt 4.8.6 > >> > >> Are you keeping a reference to the option - if not see if this makes a > >> difference. > > > > Unfortunately no, I've written up a small example for what I'm trying to > > do and attached it. > > > > I've also tried overriding paint(), calling initStyleOption there, then > > calling the parent paint() function and the icon is set on the option > > parameter in between, but the icon is not painted in the gui... > > If you implement your code to set the icon in Qt's implementation of > QStyledItemDelegate::paint() itself then the results are the same. > Therefore I don't think it is a PyQt problem. That would suggest either a > Qt bug or a it-doesn't-work-the-way-you-think-it-does problem.
Its actually a "you forgot to copy something from the C++ implementation" issue :) For those finding this in the archives: QStyleOptionViewItemV2 has a features member which can contains a HasDecoration feature. Setting that in the initStyleOption function makes the icons show up, so apparently the style checks that feature before even looking at the icon or decorationSize - at least my style here does that (couldn't spot this in QCommonStyle). Andreas _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt