2011-05-14 32 views
0

OS:視窗XP SP3 的Qt :: 4.6如何獲得更精確的鼠標移動

我與一些3D的東西玩,需要實現鼠標移動。我嘗試過使用Qt mouseMoveEvent,但發現這並不好,因爲mouseMoveEvent在移動鼠標時無法處理每個像素。我需要一些註冊每個像素運動的注意事項。 搜索解決方案,我cheked Qt的在線文檔& &發現QCursor類& &其會員POS()。

問題:: QCursor :: pos()註冊每個像素的運動?有在3D攝像機wiew的精確處理(我不使用OpenGL的建設我的引擎在畫家(這是爲了好玩& & HOBY))別人更好的主意?

回答

2

不,鼠標一次可以移動幾個像素。 如果你需要中途點的東西,然後計算它們。計算鼠標兩個位置之間的所有點。我還不清楚爲什麼你需要這些點,但這應該有所幫助。

+0

我需要精確mouseMoving爲3D fps遊戲我正在建設。所以鼠標必須對每一個像素移動都很敏感,因爲現在實現是通過mouseMoveEvent實現的,並且不平滑。那樣的運動就是抽搐。需要一些流暢的步驟。你有什麼想法或鏈接如何實現smoothnes。 – 2011-05-14 12:36:55

+0

可能是[www.unp.me/f140/smooth-out-your-mouse-movement-38370/]? – 2011-05-14 13:08:21

+0

謝謝,我會盡力的。我在工作,所以我現在不能。 – 2011-05-14 13:11:54

2

這很可能沒有太多做的Qt,但用鼠標投票率。您可能需要參考Coding Horror上的相當豐富的博客文章。

2

前段時間我有類似的問題(我沒有使用QT)。你的系統沒有那個確切的信息。

我所做的,是計算鼠標位置的變化(DX,DY),並使用這些信息來移動攝像機。在許多框架中,當您使用事件(例如SDL)獲取該信息時,您不必計算(dx,dy)。

或者,你可以計算位置的變化,然後插當前和以前的鼠標位置之間的位置 - 那麼你可以使用這些位置來移動你的相機。

,如果你想在屏幕上繪製鼠標移動你將不得不同樣的問題。然後,您可以使用Bresenham的算法http://en.wikipedia.org/wiki/Bresenham's_line_algorithm生成兩個給定點之間的像素

0

不,QCursor不提供該信息,因爲它沒有信號爲您提供此信息。你必須明確地查詢它的位置,然後在mouseMoveEvent中再次限制精度。底層的窗口系統並不能提供這種精度。就像其他人所說的那樣,只需使用任意寬泛的動作或自己計算中介點即可。