2012-09-13 73 views
0

我嘗試在QListView中設置項邊界線。
當鼠標移過物品時,線條出現,鼠標離開物品時,線條恢復正常。這就是我想要的。
所以,我使用QStyledItemDelegate,似乎這樣做,這是不正確的。pyqt:使用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

嘗試確保該項目國家沒有選擇,以及:

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

謝謝你的好意 –