Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Qt:добавить элемент на сцену по координатам мыши  (Прочитано 2578 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
Такая проблема. не могу сообразить как добавить на сцену 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())
возвращает точку на сцене. то что нужно
« Последнее редактирование: 16 Августа 2012, 16:30:08 от FluffyMan »

 

Страница сгенерирована за 0.019 секунд. Запросов: 22.