/ / Qt - configuración de la posición relativa del ratón - qt

Qt - configuración de la posición relativa del ratón - qt

Estoy moviendo mi motor gráfico de Freeglut a Qt. Mi clase de ventana hereda de QWindow. Tengo un problema con establecer la posición relativa del mouse en el centro de la ventana y ocultar un cursor. En freeglut el código se ve así:

glutWarpPointer((glutGet(GLUT_WINDOW_WIDTH) / 2), (glutGet(GLUT_WINDOW_HEIGHT) / 2));
glutSetCursor(GLUT_CURSOR_NONE);

Estaba intentando algo como esto:

this->cursor().setPos((width() / 2), (height() / 2)); // this seems to set an absolute (global) position
this->cursor().setShape(Qt::BlankCursor); // doesn"t work

¿Cómo lograr eso?

Respuestas

10 por respuesta № 1

Su código no tiene ningún efecto, porque está editando una copia temporal.
Mira la firma: QCursor QWidget::cursor() const. El objeto del cursor se devuelve por valor. Para aplicar cambios de cursor, debe devolver el objeto modificado de nuevo a través de setCursor(). Para mapear de coordenadas locales a globales, use mapToGlobal():

QCursor c = cursor();
c.setPos(mapToGlobal(QPoint(width() / 2, height() / 2)));
c.setShape(Qt::BlankCursor);
setCursor(c);