Название: QGraphicsItem(QPainterPath) неправильно определяется boundingRect Отправлено: Nidxogg от Февраль 16, 2014, 01:24 Добрый день, возникла следующая проблема:
Имеется класс, унаследованный от QGraphicsItem, в котором рисую ломанную стрелку(от А к B) с использованием QPainterPath Код: this->setPos(A->scenePos());//A - указатель на 1 элемент B - на второй Код: QPainterPath LinkItem::shape() const Унаследовался от класса сцены и переопределил mouse евенты. Код: void WorkScene::mousePressEvent(QGraphicsSceneMouseEvent *event) Собственно, в mousepress есть строчка itemAt(event->scenePos()), возвращает 0 - если нет итемов на сцене Щелкая по стрелке, данная функция всегда возвращает 0, кроме случая, когда щелкаю по самой стрелке (Polygon который в painter) С обычными стандратными итемами(прямоугольник, круг и т.д) таким проблем нет Может кто сталкивался с подобной проблемой? P.S В классе стрелки корректно обрабатываются hoverEnterEvent и hoverLeaveEvent и т.д Код: void LinkItem::hoverEnterEvent(QGraphicsSceneHoverEvent *) Название: Re: QGraphicsItem(QPainterPath) неправильно определяется boundingRect Отправлено: Fregloin от Февраль 16, 2014, 11:27 что то я не понял, а где вы рисуете стрелку - в паинте сцены? судя по тому что используете координаты сцены, позиции элемента, то да. Не проще ли стрелку рисовать в самом элементе?
Вот мой код стрелки на сцене. Он старый но рабочий. Думаю разберетесь. С минимальными правками можете добавить к себе в проект и посомотреть как работает. Название: Re: QGraphicsItem(QPainterPath) неправильно определяется boundingRect Отправлено: Nidxogg от Февраль 16, 2014, 14:55 Цитировать что то я не понял, а где вы рисуете стрелку - в паинте сцены? судя по тому что используете координаты сцены, позиции элемента, то да. Не проще ли стрелку рисовать в самом элементе? В paintEvent унаследованного от QGraphicsItem классаБез установки setPos не обрабатываются hoverэвенты. В самом пэйнтэвенте в координатам итема рисую же. Ваш класс гляну при первой возможности, спасибо. P.S Подозреваю, что проблема, в том как соединяются части в QPainterPath Название: Re: QGraphicsItem(QPainterPath) неправильно определяется boundingRect Отправлено: Fregloin от Февраль 17, 2014, 11:00 Правильные подозрения, я с таким лично сталкивался, вам нужно смотреть в сторону QPainterPath transform/united
|