pyqt:使用QStyledItemDelegate设置项边界线

时间:2012-09-13 05:53:35

标签: pyqt qstyleditemdelegate

我尝试在QListView中设置Item Boundary Line 当鼠标悬停在项目上时,该行显示,当鼠标离开该项目时,该行恢复正常。这就是我想要的。
所以,我使用QStyledItemDelegate,它似乎这样做,它是不正确的。

class PixmapItemDelegate(QtGui.QStyledItemDelegate):    
    def paint(self, painter, option, index):        
        painter.save()

        if (option.state & QtGui.QStyle.State_MouseOver):            
            pen = QtGui.QPen(QtCore.Qt.yellow)            
        else:
            pen = QtGui.QPen(QtCore.Qt.transparent)
        pen.setWidth(2)
        painter.setPen(pen)
        painter.setBrush(QtGui.QBrush(QtCore.Qt.transparent))
        painter.drawRect(option.rect)

        painter.restore()

        super(PixmapItemDelegate, self).paint(painter, option, index)

代码在上面。
如果我选择了该项目,它就搞砸了。
所选项目有边界,不会消失。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

尝试确保项目状态也没有被选中:

if ( option.state & QtGui.QStyle.State_MouseOver and \
    not option.state & QtGui.QStyle.State_Selected ):