[PySide] QStyledItemDelegate ignores StyleSheet?
-
I am subclassing a QStyledItemDelegate to draw a pixmap in the center of a QTableView's cell but when I implement my delegate I lose all stylesheet customizations and the QTableView is rendered with the default system settings.
Here's what I do: I create a delgate...
@
class MyStyleDelegate(QtGui.QStyledItemDelegate):
def init(self, parent=None):
super(MyStyleDelegate, self).init(parent)
@It's a barebones class and I set it to the column delegate of my QTableView
@
self.view.setItemDelegateForColumn(0, MyStyleDelegate(self.parent()))
@Now, when I run my application my style sheet is respected - but when I start to override functions, like:
@
class MyStyleDelegate(QtGui.QStyledItemDelegate):
def init(self, parent=None):
super(MyStyleDelegate, self).init(parent)def paint(self, painter, option, index): super(MyStyleDelegate, self).paint(painter, option, index)
@
(again, just a barebones function calling the base class) I lose all stylesheet customizations.
Why?
And how can I implement a StyleDelegate that will respect the style sheet by default?
-
After working with some examples found on the web, my paint function looks like this now. My understanding the below code should render - but respect the stylesheet.
@
def paint(self, painter, option, index):
super(MyStyleDelegate, self).paint(painter, option, index)modelIndex = index model = index.model() if isinstance(model, QtGui.QAbstractProxyModel): modelIndex = model.mapToSource(index) options = QtGui.QStyleOptionViewItemV4(option) self.initStyleOption(options, index) style = options.widget.style() if options.widget else QtGui.QApplication.style() style.drawControl(style.CE_ItemViewItem, options, painter, options.widget) QtGui.QStyledItemDelegate.paint(self, painter, option, modelIndex)
@
Some thing of interest - my options.widget is always None. Would that have the the effect that I'm seeing?