Qt For Symbian截获程序前后台切换事件
创始人
2024-07-31 20:20:36
0

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

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

  1. bool CQQApplication::symbianEventFilter( const QSymbianEvent* event )     
  2. {     
  3.     const TWsEvent* pWsEvent = event->windowServerEvent();     
  4.       
  5.     if ( pWsEvent == NULL )     
  6.     {     
  7.         return false;     
  8.     }     
  9.       
  10.     if( EEventFocusLost  == pWsEvent->Type() )//切换到后台     
  11.     {     
  12.         emit signal_Foreground(false);     
  13.         return false;     
  14.     }     
  15.     else if( EEventFocusGained  == pWsEvent->Type() )//切换到前台     
  16.     {     
  17.         emit signal_Foreground(true);     
  18.         return false;     
  19.     }     
  20.     else    
  21.     {     
  22.         return false; // 交给系统处理     
  23.     }     
  24. }     
  25. #endif   

实现步骤为:

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

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

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

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

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

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...