在 qgraphicsview 中忽略 svg 图像透明部分上的鼠标事件?
我正在开发一个图形视图(使用 C++ 和 Qt),其中包含相当多的 svg 图像。我拦截对它们的点击,但当鼠标悬停在 svg 项目的透明部分上时,我不想接收事件(或能够忽略它们)。
有可能吗?
svg 文件是否应该专门设计用于此类用途?
是否有一些我还没有听说过的隐藏 Qt 选项?
I am working on a graphics view (using C++ and Qt) which contains quite a few svg images. I intercept clicks on them, but i'd like not to receive events (or to be able to ignore them) when mouse is over transparent parts of svg items.
Is it possible ?
Should svg files be specifically designed for such use ?
Is there some hidden Qt option i have not (yet) heard of ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
有一个 CSS 属性可以应用于 SVG 元素,
pointer-events< /code>
,尽管默认值为
visiblePainted
:这表明 Qt 图形视图不支持它。
There's a CSS property which can be applied to SVG elements,
pointer-events
, though the default for this isvisiblePainted
:Which would indicate that Qt graphics view doesn't support it.
没有其他选择,只能以艰难的方式找到我的问题的答案,这就是我所做的:
因此,令人悲伤的答案是:Qt 不允许这种行为。
Having no other choice but to find out the hard way the answer to my question, here is what i did :
Hence the sad answer : Qt does not permit such a behaviour.
要完成其他答案:
重新实现事件时,在默认情况下调用基类事件非常重要,否则,未绘制部分的事件透明度就会丢失。
例如
To complete other answers:
When re-implementing events, it is important to call the base-class event for default cases, if not, the event transparency over non-painted parts is lost.
E.g.