【问题标题】:How to design an axis, by using Qt QGraphicsitem如何使用 Qt QGraphicsitem 设计轴
【发布时间】:2012-09-19 04:55:39
【问题描述】:

我想实现一个坐标轴。我想做的是:

  • 当我拖动这个轴的最头点时,鼠标移动只会改变轴的长度。
  • 当我拖动这个轴的主体时,只会改变轴的方向。

如何做到这一点?我认为,我可以使用两个 QgraphicsItems (head, body) 来表示一个轴。当 head 拖动时,进行缩放。当 body 拖动时,它会旋转。

有没有更好的解决方案?

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    您可以将其作为一个图形项来执行,拖动行为会根据您单击的位置而变化,但您的建议是合理的。

    对于您的方法,箭头需要是箭头主体的子项 - 因此,当您旋转主体时,它会适当移动,并且您需要在鼠标单击/鼠标移动事件中为箭头自定义 hack head 以适当调整身体大小。

    【讨论】:

    • 如果我把它作为一个图形项目。这个图形项如何知道我点击了哪里?
    • @xiaoke 可以通过e->pos()e->scenePos() 在事件对象e 上获取图形场景鼠标事件(包括点击/拖动)的位置。在此处查看文档:doc.qt.digia.com/4.7-snapshot/qgraphicsscenemouseevent.html#pos
    猜你喜欢
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多