LINUX.ORG.RU

Получить позицию QGraphicsItem

 , ,


0

2

Привет. Есть набор линий, которые формируют рисунок. Все линии (QGraphicsLineItem) рисуются в координатах (5; 10) — (15; 20) и объединены в QGraphicsItemGroup. Последний добавляется на сцену.

Есть вот такой код в eventFilter():

    if (pEvent->type() == QEvent::MouseMove)
    {
        QMouseEvent* pMouseMoveEvent = static_cast<QMouseEvent*>(pEvent);
        QPointF pointScene = m_pUi->graphicsView->mapToScene(pMouseMoveEvent->pos());

        m_pUi->labelX->setText(QString::number(pointScene.x()));
        m_pUi->labelY->setText(QString::number(pointScene.y()));
    }

Так вот координаты мне выдаются не в диапазоне (5; 10) — (15; 20), а начиная с 0, т.е. (0; 0) — (10; 10). Вопрос: как мне их приобразовать к нужному диапазону?

★★★★★

Может быть я чего-нибудь недопонимаю, но:

m_pUi->labelX->setText(QString::number( pointScene.x() + 5 ));
m_pUi->labelY->setText(QString::number( pointScene.y() + 10 ));

CrossFire ★★★★★ ()
Последнее исправление: CrossFire (всего исправлений: 1)

У QGraphicsItem есть набор методов mapFrom... и mapTo... Преобразуй ими координаты.

Только тебе еще надо будет проверить, над какими объектами находится мышь: QGraphicsView::items(QPoint).

grondek ()
Ответ на: комментарий от grondek

Отбой, кажись у меня в вычислениях координат косяк.

UVV ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.