[PySide] custom painted content in delegate disappears when cell is selected
Frank Rueter | OHUfx
frank at ohufx.com
Sat May 5 06:53:00 CEST 2018
And one more finding:
If I re-implement the view's mousePressEvent() the problem also doesn't
arise.
Hmm, I'm intrigued...
On 5/05/18 4:04 PM, Frank Rueter | OHUfx wrote:
> Interestingly this does not happen when drawing a pixmap.
>
> On 5/05/18 3:27 PM, Frank Rueter | OHUfx wrote:
>> Hi all,
>>
>> I am drawing some rectangles into my cell via a delegate's paint
>> event like so:
>>
>>
>> When I click one in the cells, the rectangles disappear, sometimes
>> with a lag. Sometimes they reappear when I click another cell.
>>
>>
>> The text drawn by the default paint event behaves fine, so I am
>> clearly missing something (probably obvious).
>> Below is my test code.
>> Any ideas? I'm sure I have a slap-on-the-forehead moment coming up...
>>
>> Cheers,
>> frank
>>
>> from PySide2 import QtWidgets
>> from PySide2 import QtCore
>>
>>
>> class VersionTableModel(QtCore.QAbstractTableModel):
>> def __init__(self, parent=None):
>> super(VersionTableModel, self).__init__(parent)
>> self.customData = [range(6)] * 4
>>
>> def rowCount(self, index=None):
>> return 4
>>
>> def columnCount(self, index=None):
>> return 6
>>
>> def data(self, index, role):
>> if role == QtCore.Qt.DisplayRole:
>> try:
>> return
>> "{}".format(self.customData[index.row()][index.column()] )
>> except TypeError:
>> return None
>>
>>
>> class VersionItemDelegate(QtWidgets.QStyledItemDelegate):
>>
>> def paint(self, painter, option, index):
>> super(self.__class__, self).paint(painter, option, index)
>> # paint custom icon
>> mv_rect1 = QtCore.QRect(0,0,18,10)
>> mv_rect1.moveTopRight(option.rect.bottomLeft() +
>> QtCore.QPoint(-18, -22))
>> mv_rect2 = mv_rect1.translated(3, 3)
>> mv_rect3 = mv_rect2.translated(3, 3)
>> painter.setPen(QtCore.Qt.white)
>> painter.setBrush(QtCore.Qt.red)
>> for r in (mv_rect1, mv_rect2, mv_rect3):
>> painter.drawRect(r)
>>
>>
>> if __name__ == '__main__':
>> import sys
>> app = QtWidgets.QApplication([])
>> tableView = QtWidgets.QTableView()
>> tableView.setModel(VersionTableModel())
>> tableView.setItemDelegate(VersionItemDelegate())
>> tableView.show()
>> sys.exit(app.exec_())
>>
>> --
>>
>> ohufxLogo 50x50 <http://www.ohufx.com>
>> *vfx compositing <http://ohufx.com/compositing.html> | *workflow
>> customisation and consulting <http://ohufx.com/customising.html>* *
>> *<http://ohufx.com/compositing.html>*
>> <http://www.nukepedia.com/nubridge>
>>
>>
>> Your gateway to over 1,000 free tools... right inside of Nuke
>> <http://www.nukepedia.com/nubridge>
>>
>>
>>
>> _______________________________________________
>> PySide mailing list
>> PySide at qt-project.org
>> http://lists.qt-project.org/mailman/listinfo/pyside
>
>
>
> _______________________________________________
> PySide mailing list
> PySide at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/pyside
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/pyside/attachments/20180505/63f449a5/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: idbogdmibdhpjiel.png
Type: image/png
Size: 21472 bytes
Desc: not available
URL: <http://lists.qt-project.org/pipermail/pyside/attachments/20180505/63f449a5/attachment.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mihocedglmdjhbmg.png
Type: image/png
Size: 21255 bytes
Desc: not available
URL: <http://lists.qt-project.org/pipermail/pyside/attachments/20180505/63f449a5/attachment-0001.png>
More information about the PySide
mailing list