0

我尝试在 QListView 中设置项目边界线。
当鼠标悬停在项目上时,线条出现,当鼠标离开项目时,线条恢复正常。这就是我想要的。
所以,我使用 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)

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

我该如何解决?

4

1 回答 1

1

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

if ( option.state & QtGui.QStyle.State_MouseOver and \
    not option.state & QtGui.QStyle.State_Selected ):
于 2012-09-13T17:09:07.547 回答