Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Hrundel от Ноябрь 26, 2013, 16:35



Название: [РЕШЕНО] QGraphicsItem перескакивает в нулевую позицию по событию mouseMoveEvent
Отправлено: Hrundel от Ноябрь 26, 2013, 16:35
Всем привет,

прошу прощения за глупый вопрос, но не могу найти решения.

QGraphicsItem перескакивает в нулевую позицию по событию mouseMoveEvent. То есть, Item находится в некоторой ненулевой
позиции. Стоит только начать перетаскивание и он прыгает в ноль на сцене. Прямо выскакивает из под мыши и потом все манипуляции смещения проиcходят относительно нуля.

Будте добры - объясните причину и средство как избавиться.


Название: Re: QGraphicsItem перескакивает в нулевую позицию по событию mouseMoveEvent
Отправлено: gil9red от Ноябрь 26, 2013, 16:46
А вы перемещаете QGraphicsItem через выставление флага QGraphicsItem::ItemIsMovable или вручную через события mouseMoveEvent, mousePressEvent и mouseReleaseEvent? :)


Название: Re: QGraphicsItem перескакивает в нулевую позицию по событию mouseMoveEvent
Отправлено: Hrundel от Ноябрь 26, 2013, 16:49
Ну, конечно с флагом.  ;D ;D  ;D

Код
C++ (Qt)
node->setFlags(QGraphicsItem::ItemIsMovable);


Название: Re: QGraphicsItem перескакивает в нулевую позицию по событию mouseMoveEvent
Отправлено: Hrundel от Ноябрь 27, 2013, 12:39
Кстати хочу уточнить -
перевый узел при перетаскивании перемещается нормально как и положено, не прыгая в нулевую,
а вот все последующие почему-то прыгают!!!


Название: Re: QGraphicsItem перескакивает в нулевую позицию по событию mouseMoveEvent
Отправлено: Hrundel от Декабрь 05, 2013, 12:18
Нашел в чем была проблема - моя невнимательность.
Короче в событиях узлов забыл передавать событие предку.

И все из-за одной строки:

Код
C++ (Qt)
void BSNode::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
    // ....
   QGraphicsItem::mouseReleaseEvent(event); // <--------------------- Этой стороки не хватало !!!
}