2013-03-05 6 views
1

У меня есть элемент, который является родителем некоторых других элементов. Это не группа, на самом деле этот предмет рисует кубическую кривую Безье, а дети - ее контрольные точки.Перемещение дочерних элементов в QGraphisItem

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

Это просто пример, а вообще вопрос я ищу ответ является:

когда QGraphicsItem имеет геометрию, которая зависит от ее детей, а дети могут перемещаться по взаимодействию с пользователем, как Я использую prepareGeometryChange()?

Необходимо ли это назвать? Неправильно ли строить объекты таким образом и использовать детей для этой цели?

ответ

1

Я помню тот же вопрос для себя, я вновь реализованная

QGraphicsItem::itemChange(GraphicsItemChange change, const QVariant & value) 

для детей и родителей.

Когда каждый change был QGraphicsItem::ItemPositionChange, этот ребенок излучает сигнал, а родитель имеет соответствующий слот.

+0

И, я думаю, родитель будет называть 'prepareGeometryChange' в этом слоте, правильно? – AkiRoss

+0

Когда вы реализуете 'itemChange', вы имеете доступ к' prepareGeometryChange', если это необходимо. – deepmax

+0

Хорошо, я получил его, излучаемый сигнал - это сигнал «Помененный элемент», который доставляется родительскому, и затем родитель готовится к изменению. В любом случае, я думал, что это должно быть что-то в этом роде. благодаря – AkiRoss

Смежные вопросы