×
Namespaces

Variants
Actions
(Difference between revisions)

Detecting focus lost & gained events in Qt for Symbian

From Nokia Developer Wiki
Jump to: navigation, search
hamishwillee (Talk | contribs)
m (remove Qt for Symbian category - now done with Qt and Symbian category intersection)
hamishwillee (Talk | contribs)
m (Hamishwillee - Bot change of template (Template:KnowledgeBase) - now using Template:ArticleMetaData)
Line 3: Line 3:
 
__NOEDITSECTION__
 
__NOEDITSECTION__
 
{{KBTS}}
 
{{KBTS}}
{{KnowledgeBase
+
{{ArticleMetaData
 
|id=TSQ001585
 
|id=TSQ001585
 
|platform=S60 3rd Edition, FP1<br>S60 3rd Edition, FP2<br>S60 5th Edition<br>Qt 4.6.2
 
|platform=S60 3rd Edition, FP1<br>S60 3rd Edition, FP2<br>S60 5th Edition<br>Qt 4.6.2
Line 11: Line 11:
 
|creationdate=26 April, 2010
 
|creationdate=26 April, 2010
 
|keywords=symbianEventFilter, focus
 
|keywords=symbianEventFilter, focus
 +
 +
|sourcecode= <!-- Link to example source code (e.g. [[Media:The Code Example ZIP.zip]]) -->
 +
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) -->
 +
|sdk=<!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Nokia Qt SDK 1.1]) -->
 +
|devicecompatability=<!-- Compatible devices (e.g.: All* (must have GPS) ) -->
 +
|signing=<!-- Empty or one of Self-Signed, DevCert, Manufacturer -->
 +
|capabilities=<!-- Capabilities required (e.g. Location, NetworkServices.) -->
 +
|author=[[User:Kbwiki]]
 
}}
 
}}
  

Revision as of 14:57, 24 June 2011

Template:KBTS

Article Metadata
Tested with
Devices(s): S60
Compatibility
Platform(s): S60 3rd Edition, FP1
S60 3rd Edition, FP2
S60 5th Edition
Qt 4.6.2
S60 5th Edition
S60 3rd Edition FP2
S60 3rd Edition FP1
Article
Keywords: symbianEventFilter, focus
Created: User:Kbwiki (26 Apr 2014)
Last edited: hamishwillee (24 Jun 2011)

Overview

This article explains how to detect focus change events in Qt applications on Symbian.

Description

Qt applications need to reimplement QApplication::symbianEventFilter() in order to get notification of foreground application changes, ie. focus lost & gained events. This is needed because focusInEvent(), focusOutEvent(), or hideEvent() from the QWidget class are not called on the Symbian platform when the foreground application changes.

Solution

Define an application class that inherits QApplication and reimplement symbianEventFilter():

  #include <QDebug>
 
#ifdef Q_OS_SYMBIAN
#include <QSymbianEvent>
#include <w32std.h>
#endif
 
 
class MyApplication : public QApplication
{
public:
MyApplication( int argc, char** argv ) : QApplication( argc, argv ) {}
 
#ifdef Q_OS_SYMBIAN
protected:
bool symbianEventFilter( const QSymbianEvent* symbianEvent ) {
const TWsEvent *event = symbianEvent->windowServerEvent();
 
if( !event ) {
return false;
}
 
switch( event->Type() ) {
case EEventFocusGained: {
qDebug() << "Focus gained";
break;
}
case EEventFocusLost: {
qDebug() << "Focus lost";
break;
}
default:
break;
}
 
// Always return false so we don't stop
// the event from being processed
return false;
}
#endif // Q_OS_SYMBIAN
};
99 page views in the last 30 days.
×