【问题标题】:I want to know about how to draw a line between two nodes. .我想知道如何在两个节点之间画一条线。 .
【发布时间】:2012-03-28 03:05:00
【问题描述】:

我简单解释一下:首先要在图形场景中按下鼠标并释放鼠标。该点应该是起点。然后另一个我应该按下鼠标并释放这将是终点然后应该画线。我可以在鼠标按下和移动时画一条线。但我想知道 abpve 提到的方式。请有人帮助我。我被困在这了。

【问题讨论】:

    标签: qt mousemove qgraphicsscene mousepress


    【解决方案1】:

    通过处理图形场景的mousePressEvent(),可以捕获鼠标在图形场景上按下时的鼠标位置,并使用QGraphicsSceneMouseEvent的pos()方法保存。

    检测到第二次鼠标点击,使用第一个点和第二个点画线。

    从你的问题看来你已经知道如何画线,所以我不会在这方面做任何事情。

    类似以下,

    mousePressEvent( QGraphicsSceneMouseEvent * mouseEvent) {
        QPointF pos = mouseEvent->pos();
        if( mStartPoint.isNull() ) {
            mStartPoint = pos;
        } else {
            drawLine(mStartPoint, pos);
            mStartPoint = QPointF();
        }
    }
    

    【讨论】:

    • 兄弟,这样做有点奇怪。你能给我一些例子吗?很大的帮助
    • 如何检测第二次鼠标点击?
    • 你可以在你的类中有一个成员变量,比如说mStartPoint,在鼠标点击时你检查mStartPoint是否有效,如果不是那么它的第一次点击,然后你将位置保存在mStartPoint中。在下一次鼠标单击时,再次检查 mStartPoint 这一次它是否有效,您现在知道它的第二次单击,您使用该鼠标点画线并使 mStartPoint 无效。
    • 好的,我现在试试。如果再次失败,我应该联系你吗?
    • 兄弟,我还在努力检测第一次点击和第二次点击。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 2013-06-01
    • 1970-01-01
    相关资源
    最近更新 更多