2012-11-22 55 views
0

在Qt(C++,MinGW,Windows 7)中,QCursor::setPos(...)似乎在應用程序級別而不是系統級別更改了光標的位置。例如,如果您攔截mouseMoveEvent並取消光標的移動(使用setMouseTracking(false),只有當您按下鼠標按鈕時纔會取消),則只要您保持鼠標按鈕,您就不會看到光標移動按下。但是,當你鬆開按鈕並稍微移動時,如果你沒有阻止它的移動,光標將會移到原來的位置。這種行爲是否正常?如何繞過它以便在系統級別更改鼠標光標?Qt中奇怪的遊標行爲

如果不夠清楚,我可以給出代碼片段。

回答

3

移動QWidget的光標總是使用小部件的座標。對於全局鼠標定位,您應該使用桌面小部件(QDesktopWidget)。您可以通過QApplication::desktop()靜態函數獲取它。示例:

QApplication::desktop()->cursor().setPos(0,0); 

這應該將鼠標光標移動到桌面的左上角。

+0

謝謝。它確實解決了這個問題。 –