Как правильно увеличить положение мыши в QOpenGLWidget - PullRequest
0 голосов
/ 01 апреля 2019

Используя Qt5, я создал подкласс QOpenGLWidget и отображаю QImage через QPainter.

Теперь я хочу иметь возможность увеличивать и уменьшать масштаб по центру курсора мыши.

В цикле рисования I:

  • Переместить начало координат на курсор мыши
  • Масштабирование по коэффициенту масштабирования (устанавливается по событию колеса мыши)
  • Переместить начало назад
void QOpenGLCanvas::paintGL()
{
    QOpenGLFunctions *f = QOpenGLContext::currentContext()->functions();
    f->glClear(GL_COLOR_BUFFER_BIT);

    QPainter painter(this);
    if (!img.isNull())
    {
        QPoint mousePos = mapFromGlobal(QCursor::pos());
        painter.translate(mousePos);
        painter.scale(zoomfactor, zoomfactor);
        painter.drawImage(-mousePos, img);
    }
    painter.end();
}

Это работает, когда мышь остается неподвижной, но заставляет изображение «прыгать», когда курсор перемещается между двумя событиями рисования.

Вот скриншот, чтобы показать, что происходит: https://www.youtube.com/watch?v=KyJ1xJGA0lQ

Я попытался сместить разницу на последнюю позицию курсора, но не смог заставить его работать. Чего мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...