此应用程序使用标志ItemIsMovable和ItemIsSelectable绘制一些图形项。 QGraphicsView处理所有键盘和鼠标交互。
如果两个boundingRects()碰撞,我想总是选择曲面中最小的项;例如,想象两个矩形,一个在另一个内。单击内部矩形的用户将期望选择一个。
我的想法:
(1)每次项目改变形状时重新计算Z指数。这似乎有点矫枉过正。
(2)重新实现QGraphicsItem.shape()[我的项目实际上是段路径 - 如果我可以选择段而不是在边界框上,它会工作] - 返回QPainterPath()似乎没有做的伎俩。
(3)首先捕获项目中的鼠标事件并执行某些操作(?)以覆盖默认选择机制。这看起来也有点矫枉过正。
有没有简单的方法来实现这一目标?
谢谢, 塞巴斯蒂安
答案 0 :(得分:0)
当用户选择项目并且图形视图收到位置时,您可以使用位置convert it to scene coordinates和调用QGraphicsScene::items功能。这将返回给定位置的项目。
现在您拥有用户选择的项目列表,然后您可以比较项目以找到最小的项目set it as selected。