[PyQt] Override QStyledItemDelegate.initStyleOption not working?

Phil Thompson phil at riverbankcomputing.com
Wed Jan 11 14:47:25 GMT 2012


On Tue, 10 Jan 2012 21:19:18 +0100, Andreas Pakulat <apaku at gmx.de> wrote:
> On 10.01.12 10:19:13, Phil Thompson wrote:
>> On Tue, 10 Jan 2012 00:11:49 +0100, Andreas Pakulat <apaku at 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.

Phil



More information about the PyQt mailing list