[PyQt] How to cast QStyleOption objects in PyQt4?

Phil Thompson phil at riverbankcomputing.com
Tue Mar 2 17:18:52 GMT 2010


On Tue, 2 Mar 2010 17:01:26 +0000, Jugdish <jugdizh at gmail.com> wrote:
> How do I convert a QStyleOptionViewItem into a QStyleOptionViewItemV4? Qt
> has the qstyleoption_cast() method, but no such method exists in PyQt4.
> 
> I have my own subclass of QStyledItemDelegate and have overridden the
> initStyleOption() method so that I can provide my own
foreground/background
> colors, fonts, etc. The problem I'm running into is with the background
> color -- I need to set the backgroundBrush attribute, which is only
> available on QStyleOptionViewItemV4. So I need to somehow cast the
> QStyleOptionViewItem object into a QStyleOptionViewItemV4 object...
> 
> from PyQt4 import *
> 
> class MyItemDelegate(QStyledItemDelegate):
> 
>     def initStyleOption(self, option, index):
>         QStyledItemDelegate.initStyleOption(self, option, index)
> 
>         # set font family and color
>         option.font.setFamily("Courier")
>         option.palette.setBrush(QPalette.Text, QtCore.Qt.red)
> 
>         # set background color
>         # this doesn't work:
>         option.backgroundBrush = QBrush(QtCore.Qt.black)
>         # neither does this:
>         option = QStyleOptionViewItemV4(option)
>         option.backgroundBrush = QBrush(QtCore.Qt.black)

You can't at the moment, but I don't see any reason why it couldn't be
supported.

Watch this space...

Phil


More information about the PyQt mailing list