2013-10-31 182 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);