我尝试在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)
代码在上面。
如果我选择了该项目,它就搞砸了。
所选项目有边界,不会消失。
我该如何解决?
答案 0 :(得分:1)
尝试确保项目状态也没有被选中:
if ( option.state & QtGui.QStyle.State_MouseOver and \
not option.state & QtGui.QStyle.State_Selected ):