2009-08-21 69 views
7

好的,使用Qt,我想知道如何在任何時間點檢測鼠標的當前狀態 - 沒有一個MouseEvent。如何在沒有MouseEvent的情況下檢測Qt中的鼠標狀態

使用QCursor :: pos(),你可以得到它的位置,但是有沒有一種方法來確定按鈕的當前狀態?

基本上,我正在尋找驗證計時器熄滅時鼠標的狀態,所以它不會與任何特定的MouseEvent相關,因此沒有MouseEvent進行查詢。我需要知道如何在沒有MouseEvent的情況下查詢鼠標的狀態 - 尤其是按鈕的狀態。

呵呵,我使用的是Qt 3,所以如果在Qt 4中添加了這樣一個函數,但不在Qt 3中,它對我來說幫不了多少忙(儘管知道這些函數還是很好的)。

回答

1

難道你不使用MouseEvent?或者你可以間接使用MouseEvents嗎?

如果您爲每個按鈕創建一個布爾變量並使用鼠標按下/釋放事件更新它,那麼您可以在計時器關閉時查看相關布爾值的值。

+0

它不能與事件相關。我的意思是,如果有一個函數通過返回一個MouseEvent給你當前的鼠標狀態,那很好,但我不能處理一個事件。我必須能夠簡單地查詢鼠標的當前狀態,而不必擔心事件是否已經觸發。 – 2009-08-24 16:00:00

+0

爲什麼你不能訪問這些事件?你擔心表演嗎?由於事件,您的代碼如何在GUI中運行而不發送? – Bill 2009-08-26 20:15:24

+0

這是一個複雜的系統,絕對沒有錯誤,我不能保證我不會錯過任何事件。所以,當鼠標處於正確狀態時,應該設置定時器_should_才能關閉,我必須能夠在鼠標關閉時檢查鼠標的狀態,以確保沒有任何事件通過裂縫落下。 – 2009-08-27 16:19:37

14

Qt::MouseButtons QApplication::mouseButtons() [static]

返回鼠標上的按鈕的當前狀態。當事件隊列清空將自發改變鼠標狀態(QEvent::MousePressQEvent::MouseRelease事件)的事件 時,當前 狀態被同步更新。

應該指出,這可能並不反映在調用時輸入設備上保存的實際按鈕,而是上述事件中最後報告的最後一次報告的鼠標按鈕 。如果沒有鼠標按鈕 被保留Qt::NoButton被返回。

編輯:嗯,我只是注意到你問了Qt3.3。這個答案適用於Qt4恐怕。

+0

好吧,就像我在問題中所說的那樣,知道是否有辦法即使沒有在qt3中,也可以在qt4中執行此操作。如果沒有其他的東西,我可以在未來版本的應用程序中使用它(並且知道更多關於這種事情總是很好的)。然而,目前的版本是在qt3中,所以除非在qt3中有辦法做到這一點,那麼我目前運氣不佳。但是如果是qt4而不是qt3,那隻能說明奇趣科技繼續改進qt並使其成爲更好的工具包。 – 2009-08-27 16:24:05

相關問題