2012-01-20 70 views
2

我試圖在我的應用程序上實現一個屏幕保護程序。每次它閒置一段時間,視頻將通過應用程序播放。爲了實現這一點,我使用了一個QTimer,它每5分鐘調用一次函數來播放視頻。問題是我需要在每次用戶點擊時重新啓動計時器。目前,我正試圖將我的應用的所有按鈕點擊與重新啓動器插槽連接,但顯然不是實現此目的的最佳方法。 那麼,我如何獲取系統的所有鼠標事件以重新啓動計時器?如何獲取應用程序的所有鼠標事件?

回答

2

您可以安裝一個event filter到QApplication的接收所有發生在應用

+0

是的,那是最好的辦法和作品。最大的問題是,如果我過濾MousePress事件,它不會傳播我所有的Widget。我該如何解決這個問題?目前我做了一個解決方法來重置每個MouseMove而不是MousePress的計時器。 –

+1

不要過濾它,在eventFilter方法中返回false而不是true –

+0

另外值得一提的是,如果你的應用程序不會被激活,它將不會收到鼠標事件 –

-1

重新實現bool QWidget::x11Event (XEvent * event)的事件,您可以收到系統範圍X事件

+0

嗯,它只適用於X11,不適用於任何平臺解決方案 –

+0

不是最實用的 –

相關問題