2014-01-23 72 views
1

我有一個QGraphicsView,它有兩種從QGraphicsItem中分類出來的項目。第一種物品(A)是可移動的。第二種類型(B)應該始終在鼠標指針下方突出顯示。當鼠標拖動其他項目時,項目懸停事件不起作用

如果B在A下,B仍然可以突出顯示。但是如果鼠標指針在B上而A被拖拽時B不會高亮顯示。

什麼是最乾淨的方式來實現這種行爲?

編輯

我這是怎麼實現的高亮B:

def hoverEnterEvent(self, *args, **kwargs): 
    self.hover = True 
    self.update() 

def hoverLeaveEvent(self, *args, **kwargs): 
    self.hover = False 
    self.update() 

def paint(self, painter, *args, **kwargs): 
    painter.setRenderHint(QPainter.Antialiasing) 
    if self.hasFocus() or self.hover: 
     painter.setPen(self.pen_selected) 
    else: 
     painter.setPen(self.pen()) 
    painter.drawPath(self.path()) 
+0

請顯示代碼突出顯示的項目B – qurban

回答

0

我最終發送了一個來自A的mouseMoveEvent的信號,並在QGraphicsScene中設置了B中的懸停屬性。

它的工作原理,但不是最優雅的解決方案。如果有人有更好的方法,請發佈它,我會改變接受的答案。

0

無論你正在做的,突出項目B,這樣做,在B的dragEnterEvent太多,使B成爲時強調其他一些物品正在被拖拽。

+0

只有在A啓動'QDrag'時纔有效。如果我這樣做,A不再隨着光標移動,所以我只需設置'ItemIsMovable'標誌而不用點擊拖放系統。 – BoshWash

相關問題