gpt4 book ai didi

qt - QGraphicsPathItem hideEvents - 抑制在路径形成的区域上悬停

转载 作者:行者123 更新时间:2023-12-03 09:20:32 25 4
gpt4 key购买 nike

https://www.dropbox.com/s/phven3rriv36893/graphicsview-pathitem.png?dl=0我想知道是否有办法让我的 QGraphicsPathItem 响应 mouseHoverEvents 到实际曲线,而不是文档中看到的整个橙色区域。

https://www.dropbox.com/s/7m8w34nitp34sgf/pipes.png?dl=0在我的应用程序中,我没有看到实际形成路径的区域,因此我只需要当贝塞尔曲线悬停时有一个hoverEnterEvent(当然,当贝塞尔曲线离开时有一个hoverLeaveEvent)。

这可以用 QGraphicsPathItem 实现还是完全错误的方法?如果是,怎么办?如果没有,什么 QGraphics 对象可以被视为替代品?

如果确实需要代码,请告诉我。

干杯,迈克尔

最佳答案

Tim Wakeham 的答案完全正确:您需要重新实现 shape() 以为路径项提供更详细的形状。然而,他的答案并不完全有用,因为实现一个好的 shape() 方法返回正确的 QPainterPath 并不简单。

这更令人困惑,因为在这种情况下,QGraphicsPathItem 已经可以从其 path() 方法提供 QPainterPath 。不幸的是,这通常不是从 shape() 方法返回的正确值,因为它绘制项目而不是界定其外部。

幸运的是,由于这是一个相当标准的要求,因此有一个内置类可以将路径转换为可用于形状的轮廓:QPainterPathStroker

这是我用来执行此操作的一些代码:

    qp = QtGui.QPainterPathStroker()
qp.setWidth(MARGIN)
qp.setCapStyle(QtCore.Qt.SquareCap)
shape = qp.createStroke(self.path())

关于qt - QGraphicsPathItem hideEvents - 抑制在路径形成的区域上悬停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32428810/

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