Qt For Symbian截獲程序前后臺切換事件
本文介紹的是Qt For Symbian截獲程序前后臺切換事件處理機制,在項目中需要做一個功能:當程序切換到后臺時:需將代表程序的托盤顯示在手機桌面上。而當程序切換到前臺顯示出來時則把托盤給隱藏。為了實現這一點,需要先截獲程序前后臺切換事件。 原本寫過一片博文處理這個問題,但是那個并不怎么好用,這里給出最終的解決方案。
首先:qt本身無法跨平臺實現這一點,我們只能針對不同平臺來定制不同的方法。在qt for symbian下:有一個symbianEventFilter()事件過濾器,其可以截獲所有symbian事件,這其中就包括前后臺切換事件。不多說了,代碼如下:
- bool CQQApplication::symbianEventFilter( const QSymbianEvent* event )
- {
- const TWsEvent* pWsEvent = event->windowServerEvent();
- if ( pWsEvent == NULL )
- {
- return false;
- }
- if( EEventFocusLost == pWsEvent->Type() )//切換到后臺
- {
- emit signal_Foreground(false);
- return false;
- }
- else if( EEventFocusGained == pWsEvent->Type() )//切換到前臺
- {
- emit signal_Foreground(true);
- return false;
- }
- else
- {
- return false; // 交給系統處理
- }
- }
- #endif
實現步驟為:
1:繼承QApplication來重新實現一個自定義的應用程序類。
2:實現其中的symbianEventFilter()虛函數,處理EEventFocusLost和EEventFocusGained 這兩個事件即可。
3:這兩個事件前邊處理完后記得return false.這樣后續系統就可以繼續處理了。
我的做法正如上述代碼所示:一般我會發一個信號出去,在別處進行處理。
小結:Qt For Symbian截獲程序前后臺切換事件的內容介紹完了,現在認為筆者的這篇文章真的很好,希望對你有所幫助!!!