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 № 1Su 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);