2012-03-28 1 views
0

просто я объясняю: сначала хочу нажать мышь в графику и отпустить мышь. эта точка должна быть начальной. то другой plase i должен нажать мышь и отпустить, которая будет конечной точкой, тогда линия должна быть нарисована. Я могу нарисовать линию при нажатии и перемещении мыши. но я хочу знать, что это так. пожалуйста, помогите мне. я застрял в этом.Я хочу знать, как нарисовать линию между двумя узлами. ,

ответ

1

Вы можете захватить местоположение мыши, когда мышь нажата на графическую сцену, обработав mousePressEvent() графической сцены и используя метод pos() QGraphicsSceneMouseEvent и сохраните его.

Письмо, в котором вы обнаруживаете второй щелчок мыши, используйте первую точку и вторую точку для рисования линии.

От вас вопрос, что вы уже знаете, как рисовать линию, поэтому я ничего не стану по этому поводу.

Нечто подобное следующее,

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

Bro, его немного странно делать. может у дать мне пример. Большая помощь –

+0

Как обнаружить второй щелчок мышью? –

+0

у вас может быть одна переменная-член в вашем классе, скажем, mStartPoint, при щелчке мыши вы проверяете, действителен ли mStartPoint или нет, если нет, то первый щелчок, и вы сохраняете местоположение в mStartPoint. при следующем щелчке мыши вы снова проверяете mStartPoint на этот раз, когда он действителен, теперь вы знаете его второй щелчок, вы используете эту точку мыши для рисования линии и аннулирования mStartPoint. – Kunal