2013-10-31 181 views
3

我正在将我的图形引擎从Freeglut移动到Qt。我的窗口类继承自QWindow。 我在将相对鼠标位置设置到窗口中心并隐藏游标时遇到了问题。 在freeglut的代码如下所示:Qt - 设置相对鼠标位置

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

我是想这样的事情:

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

如何实现这一目标?

回答

8

您的代码没有任何效果,因为您正在编辑临时副本。
看看签名:QCursor QWidget::cursor() const。游标对象由值返回。 要应用光标更改,您必须通过setCursor()传回修改的对象。要从本地坐标映射到全局坐标,请使用mapToGlobal()

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