Получение координат мыши Qt OpenGL

У меня есть виджет openGL и я знаю, что могу получить координаты моей мыши следующим образом:

X = this->mapFromGlobal(QCursor::pos()).x();
Y = this->mapFromGlobal(QCursor::pos()).y();

Давайте представим, что моя мышь находится в положении (X, Y) на виджете. Теперь я хочу нажать левую кнопку мыши на виджете и снова переместить курсор в другое место в виджете (скажем, (X ‘, Y’)), а затем отжать левую кнопку мыши.

Q: Как сохранить (X, Y) и (X ‘, Y’)?

3

Решение

Самое простое решение — хранить их как участников, например так:

class MyGLWidget: public QGLWidget
{
// ...

private:
int xAtPress, yAtPress;
};

void MyGLWidget::mousePressEvent(QMouseEvent * event)
{
xAtPress = event->x();
yAtPress = event->y();
}

void MyGLWidget::mouseReleaseEvent(QMouseEvent * event)
{
int xAtRelease = event->x();
int yAtRelease = event->y();

// example code
int dx = xAtRelease - xAtPress;
int dy = yAtRelease - yAtPress;
translateObject(dx,dy);
}

Примечание: использование event->pos() уже дает вам положение мыши в координате виджета, это гораздо лучше, чем при использовании mapFromGlobal(QCursor::pos())

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]