gpt4 book ai didi

python - PyQt:QGraphicsScene 事件不会传播到 GraphicItems

转载 作者:行者123 更新时间:2023-11-28 22:02:01 25 4
gpt4 key购买 nike

我在 QGraphicView 中有一个 GraphicScene,其中填充了许多矩形(项目)。我希望每个矩形都能响应鼠标点击,但我无法找到将事件处理程序附加到正确对象并将事件传播到它的 Hook 。

我将事件处理程序附加到场景:

scene.event = myfunction

它起作用了(它触发了每个事件)但我无法将相同的功能附加到它的一个子项上。您能告诉我在哪里可以找到这样的入口点吗?

最佳答案

所以 - 我不太确定你在那里做什么,但我想不出在 PyQt 中你应该将自定义函数直接映射到场景的事件方法的任何地方。

你有实际的例子吗?

如果你正在做:

scene.mousePressEvent = my_mouse_function

那不是你想要的方式。

您可以考虑使用事件过滤器 (http://doc.qt.nokia.com/4.7-snapshot/eventsandfilters.html#event-filters)。

获得所需内容的最佳方法是子类化 QGraphicsItem(无论您使用哪个 - QGraphicsRectItem、QGraphicsPathItem 等)并在其上重载 mousePressEvent 方法。

http://doc.qt.nokia.com/4.7-snapshot/qgraphicsitem.html#mousePressEvent

例如:

from PyQt4.QtGui import QGraphicsRectItem

class MyItem(QGraphicsRectItem):
def mousePressEvent(self, event):
super(MyItem, self).mousePressEvent(event)
print 'overloaded'

scene.addItem(MyItem())

关于python - PyQt:QGraphicsScene 事件不会传播到 GraphicItems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12161860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com