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

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

首先: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.这样后续系统就可以继续处理了。

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

--------------------------------------------------------------------------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值