gpt4 book ai didi

c++ - 启用 ItemClipsChildrenToShape 后,如何在 QGraphicsScene 中进行精确的鼠标事件处理?

转载 作者:太空狗 更新时间:2023-10-29 22:53:33 25 4
gpt4 key购买 nike

我有一个 QGraphicsItem 剪辑它的子项(我启用了它的 ItemClipsChildrenToShape 标志)。我注意到裁剪使得将鼠标事件分配给子项目不精确:他们的边界矩形用于检测哪个项目位于特定位置,而不是项目的精确形状,因此子项目在其整个边界矩形中接收鼠标事件。未启用裁剪时,它会按预期正常工作。

将子项的边界区域粒度设置为 1.0 没有帮助。我正在使用 qt 4.5.0。

我用来测试这个问题的程序可以在 http://pastebin.com/m3d0cfb53 找到。

我在 qt 文档中找不到有关此行为的任何信息。我想知道这是否是 qt 中的错误以及是否有解决方法。

最佳答案

我知道这是一个老问题,但我遇到了同样的问题。

QGraphicsItems 的文档说:

The shape() function is used for many things, including collision detection, hit tests, and for the QGraphicsScene::items() functions.

The default implementation calls boundingRect() to return a simple rectangular shape, but subclasses can reimplement this function to return a more accurate shape for non-rectangular items.

所以用 QPainterPath 覆盖 shape() 函数解决了我的问题。

关于c++ - 启用 ItemClipsChildrenToShape 后,如何在 QGraphicsScene 中进行精确的鼠标事件处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1993123/

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