【发布时间】:2012-09-19 04:55:39
【问题描述】:
我想实现一个坐标轴。我想做的是:
- 当我拖动这个轴的最头点时,鼠标移动只会改变轴的长度。
- 当我拖动这个轴的主体时,只会改变轴的方向。
如何做到这一点?我认为,我可以使用两个 QgraphicsItems (head, body) 来表示一个轴。当 head 拖动时,进行缩放。当 body 拖动时,它会旋转。
有没有更好的解决方案?
【问题讨论】:
我想实现一个坐标轴。我想做的是:
如何做到这一点?我认为,我可以使用两个 QgraphicsItems (head, body) 来表示一个轴。当 head 拖动时,进行缩放。当 body 拖动时,它会旋转。
有没有更好的解决方案?
【问题讨论】:
您可以将其作为一个图形项来执行,拖动行为会根据您单击的位置而变化,但您的建议是合理的。
对于您的方法,箭头需要是箭头主体的子项 - 因此,当您旋转主体时,它会适当移动,并且您需要在鼠标单击/鼠标移动事件中为箭头自定义 hack head 以适当调整身体大小。
【讨论】:
e->pos() 或e->scenePos() 在事件对象e 上获取图形场景鼠标事件(包括点击/拖动)的位置。在此处查看文档:doc.qt.digia.com/4.7-snapshot/qgraphicsscenemouseevent.html#pos