在项目中需要做一个功能:当程序切换到后台时:需将代表程序的托盘显示在手机桌面上。而当程序切换到前台显示出来时则把托盘给隐藏。想知道下文,那块看看本文吧!

本文介绍的是Qt For Symbian截获程序前后台切换事件处理机制,在项目中需要做一个功能:当程序切换到后台时:需将代表程序的托盘显示在手机桌面上。而当程序切换到前台显示出来时则把托盘给隐藏。为了实现这一点,需要先截获程序前后台切换事件。 原本写过一片博文处理这个问题,但是那个并不怎么好用,这里给出最终的解决方案。

Qt For Symbian截获程序前后台切换事件  Symbian 切换 第1张

首先:Qt本身无法跨平台实现这一点,我们只能针对不同平台来定制不同的方法。在qt for Symbian下:有一个symbianEventFilter()事件过滤器,其可以截获所有symbian事件,这其中就包括前后台切换事件。不多说了,代码如下:

  1. boolCQQApplication::symbianEventFilter(constQSymbianEvent*event)
  2. {
  3. constTWsEvent*pWsEvent=event->windowServerEvent();
  4. if(pWsEvent==NULL)
  5. {
  6. returnfalse;
  7. }
  8. if(EEventFocusLost==pWsEvent->Type())//切换到后台
  9. {
  10. emitsignal_Foreground(false);
  11. returnfalse;
  12. }
  13. elseif(EEventFocusGained==pWsEvent->Type())//切换到前台
  14. {
  15. emitsignal_Foreground(true);
  16. returnfalse;
  17. }
  18. else
  19. {
  20. returnfalse;//交给系统处理
  21. }
  22. }
  23. #endif

实现步骤为:

1:继承QApplication来重新实现一个自定义的应用程序类。

2:实现其中的symbianEventFilter()虚函数,处理EEventFocusLost和EEventFocusGained 这两个事件即可。

3:这两个事件前边处理完后记得return false.这样后续系统就可以继续处理了。

我的做法正如上述代码所示:一般我会发一个信号出去,在别处进行处理。

小结:Qt For Symbian截获程序前后台切换事件的内容介绍完了,现在认为笔者的这篇文章真的很好,希望对你有所帮助!!!

转载请说明出处
知优网 » Qt For Symbian截获程序前后台切换事件

发表评论

您需要后才能发表评论