當我的光標在我的QGraphicsScene
中的QGraphicsItem
上時,我想要彈出一些小文本。我有一個繼承自QGraphicsItem
的類,它代表了我在場景中的圖形項目。QGraphicsItem懸停事件(PyQt4)
我試過使用QGraphicsItem.hoverEnterEvent
,我也設置了setAcceptHoverEvents(True)
,但我仍然無法啓用該懸停事件。我也遇到了一個事件過濾器的方法,但我不知道在哪裏實現它。
我應該在QGraphicsItem
課程或場景中安裝事件過濾器嗎?我嘗試了兩種方法,但仍未獲得理想的效果。我希望能夠將鼠標懸停在場景中的所有項目上。
更新: 所以我嘗試這樣做,但懸停事件仍然沒有被檢測到。
class graphics_Object(QtGui.QGraphicsPixmapItem):
def __init__(self, parent=None):
super(graphics_Object, self).__init__(parent)
pixmap = QtGui.QPixmap("item.png")
self.graphics_pixItem = QtGui.QGraphicsPixmapItem(pixmap.scaled(40, 40, QtCore.Qt.KeepAspectRatio))
self.graphics_pixItem.setFlag(QtGui.QGraphicsPixmapItem.ItemIsSelectable)
self.graphics_pixItem.setFlag(QtGui.QGraphicsPixmapItem.ItemIsMovable)
self.graphics_pixItem.setAcceptHoverEvents(True)
def hoverEnterEvent(self, event):
print 'hello'
class graphicsScene(QtGui.QGraphicsScene):
def __init__(self, parent=None):
super(graphicsScene, self).__init__(parent)
def mousePressEvent(self, event):
self.graphics_item = graphics_Object()
def mouseReleaseEvent(self, event)
self.addItem(self.graphics_item.graphics_pixItem)
self.graphics_item.graphics_pixItem.setPos(event.scenePos())
class Form(QtGui.QMainWindow):
def __init__(self):
super(Form, self).__init__()
self.ui = uic.loadUi('form.ui')
self.scene = graphicsScene()
self.ui.view.setScene(self.scene)
self.setMouseTracking(True)
您是否繼承'QGraphicsItem'?這是使用'hoverEnterEvent'的唯一方法。 'QGraphicsItem'不是'QObject',所以你不能在其上安裝一個事件過濾器(雖然你可以將它的事件傳遞到*另一個*'QGraphicsItem'上,但我認爲這對你沒有幫助)。 –
謝謝你的迴應,我已經更新了我的代碼,我嘗試了繼承QGraphicsPixmapItem,但懸停事件仍然沒有被檢測到 – neziy
嘗試將鼠標追蹤放在graphicsview上,而不是主窗口 –