Qt碰撞选择框

时间:2014-08-18 07:05:40

标签: qt

此应用程序使用标志ItemIsMovable和ItemIsSelectable绘制一些图形项。 QGraphicsView处理所有键盘和鼠标交互。

如果两个boundingRects()碰撞,我想总是选择曲面中最小的项;例如,想象两个矩形,一个在另一个内。单击内部矩形的用户将期望选择一个。

我的想法:

(1)每次项目改变形状时重新计算Z指数。这似乎有点矫枉过正。

(2)重新实现QGraphicsItem.shape()[我的项目实际上是段路径 - 如果我可以选择段而不是在边界框上,它会工作] - 返回QPainterPath()似乎没有做的伎俩。

(3)首先捕获项目中的鼠标事件并执行某些操作(?)以覆盖默认选择机制。这看起来也有点矫枉过正。

有没有简单的方法来实现这一目标?

谢谢, 塞巴斯蒂安

1 个答案:

答案 0 :(得分:0)

当用户选择项目并且图形视图收到位置时,您可以使用位置convert it to scene coordinates和调用QGraphicsScene::items功能。这将返回给定位置的项目。

现在您拥有用户选择的项目列表,然后您可以比较项目以找到最小的项目set it as selected