Такая проблема. не могу сообразить как добавить на сцену QGraphicsScene элемент по координатам мыши в QGraphicsView.
То есть имеет QGraphicsView, в нем сцена. Я навожу мышь на QGraphicsview и жму клавишу. после этого линия должна добавиться из позиции сцены 0, 0 в позицию координат курсора.
я делаю так
view.installEventFilter(this);
...
bool MainWindow::eventFilter(QObject *target, QEvent *event)
{
if (target == &view && event->type() == QGraphicsSceneMouseEvent::MouseButtonPress)
{
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
scene.addLine(mouseEvent->pos().x(), mouseEvent->pos().y(), 0, 0, QPen(Qt::green));
}
}
но во-первых если я представление отмасштабирую, то после этого масштабирования линия рисоваться уже будет не в позицию курсора, а непонятно куда.а во-вторых после установки фильтра событий в представлении у представления пропали скроллбары и оно не ресайзится.
помогите разобраться
Пользователь решил продолжить мысль 16 Августа 2012, 16:30:08:
разобрался.
view.mapToScene(mouseEvent->pos())
возвращает точку на сцене. то что нужно