2015-08-18 8 views
2

У меня есть два объекта QGraphicsItem в сцене, и я хочу нарисовать линию между этими двумя объектами. Однако эти объекты являются подвижными, и я не знаю, как обновлять строку после каждого движения?Qt Как подключить два QGraphicsItem по линии чертежа, когда элементы перемещаются

+0

Вы должны подклассифицировать элементы и иметь для них сохранение указателя на объект-строку при создании соединения. Затем переопределите метод 'itemChange', чтобы они обновили строку с изменениями геометрии. Это не самая тривиальная задача, и вам нужно позаботиться о правильном удалении объектов и удалении сохраненных указателей в нужное время. – Bowdzone

+0

Незначительные ошибки грамматики и исправленные ошибки. – Rico

+0

Но как добавить строку в сцену, соединяющую эти два объекта? Как насчет boundingRect? – Makumba

ответ

0

В одном приложении я реализовывал линию между объектами чертежа собственно три строки следующим образом:

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

Чтобы обновить строки, я добавил 6 указателей на объекты

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

Когда объекты и линии были созданный, я устанавливаю указатели prvLineItems и nxtLineItems указывает на созданные строки.

Затем, когда местоположение объекта изменилось, я также переместил соответствующие строки (в моем случае в mouseReleaseEvent).

В вашем случае вам нужен только один указатель на линию на объекты 1 и 2. Когда один из объектов меняет местоположение, измените также координаты линии.

2

Я просто отвечаю на один из ваших других вопросов, демонстрируя именно это: соединение двух подвижных затмений с линией.

Существует полный рабочий пример, который поможет вам двигаться. См. this other answer для более подробной информации.

Добавить комментарий или обновите свой вопрос, если что-то еще неясно. В противном случае отметьте его как принятый.