【问题标题】:Qt How to connect two QGraphicsItem by drawing line when items are movableQt如何在项目可移动时通过画线连接两个QGraphicsItem
【发布时间】:2015-08-25 16:19:34
【问题描述】:

我在一个场景中有两个 QGraphicsItem,我想在这两个对象之间画一条线。但是,这些对象是可移动的,我不知道每次移动后如何更新一行?

【问题讨论】:

  • 您必须对项目进行子类化,并在建立连接时让它们存储指向线对象的指针。然后覆盖他们的itemChange 方法,以便他们更新几何更改的行。这不是最简单的任务,您必须注意正确删除对象并在正确的时间删除存储的指针。
  • 小语法错误和固定标点符号。
  • 但是如何将线添加到连接这两个对象的场景中? boundingRect 呢?

标签: qt qgraphicsitem qgraphicsscene


【解决方案1】:

我只是回答你的一个其他问题,证明这一点:用一条线连接 2 个可移动的日食。

有一个完整的示例可以帮助您进行操作。详情请见this other answer

如果仍有不清楚的地方,请添加评论或更新您的问题。否则,请将其标记为已接受。

【讨论】:

    【解决方案2】:

    在一个应用程序中,我通过以下方式绘制了三条线来实现对象之间的线:

    A----
        :
        :----B
    

    为了更新这些行,我添加了 6 个指向对象的指针

    QGraphicsLineItem *prvLineItems[3];
    QGraphicsLineItem *nxtLineItems[3];
    

    创建对象和线条时,我将指针 prvLineItems 和 nxtLineItems 设置为指向创建的线条。

    然后当对象的位置发生变化时,我也移动了相应的行(在我的情况下是 mouseReleaseEvent)。

    在您的情况下,您只需要一个指向对象 1 和 2 的线的指针。当其中一个对象更改位置时,也要更改线的坐标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多