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 に答える