qt for symbian前后台切换事件的截获处理

转载:http://blog.csdn.net/NRC_DouNingBo/article/details/6073981



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

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


#ifdef Q_OS_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.这样后续系统就可以继续处理了。

 

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值