我在玩一些圖形,並且用箭頭鍵實現了簡單的攝像機移動。我的第一種方法是重寫keyPressEvent
做這樣的事情:用Qt檢查一個按鍵是否關閉
switch(key)
{
case up: MoveCameraForward(step); break;
case left: MoveCameraLeft(step); break;
...
}
,因爲我希望它這是行不通的。例如,當按住前進鍵時,相機向前移動「步進」單位,然後暫停一段時間然後繼續移動。我猜測這就是事件的產生方式,爲了避免多次事件發生,只要按下一點點按鍵。
所以,我需要在我的Paint()
例程中輪詢鍵盤。我還沒有找到如何與Qt做。我想有一個map<Key, bool>
這將在keyPressEvent
和keyReleaseEvent
更新和輪詢該地圖Paint()
。任何更好的想法?感謝您的任何見解。
這是特別鼓勵的,因爲鍵盤重複速率可以由用戶設置。這是保證它獨立於內部滴答速率的唯一方法。 – RedX
在qt論壇中有一個主題和一個例子:http://qt-project.org/forums/viewreply/135346/ – bobbaluba