Native to Native: porting iOS and Android apps to Qt 5

mkrus's picture

Mike Krus
Europe Date: 
Wednesday, October 8, 2014 -
9:00am to 10:00am
Europe Room: 
Europe Track: 

Presenter Bio: 

Mike joined Midland Valley in 2005 as a Senior Software Engineer. Mike now the technical lead for all software related projects and is involved in application design and software development. His interests and expertise include software engineering project management and interactive 3D visualisation software design, which he developed previously at Trimble Inc. and during his PhD in France. While having many years of C++ and Qt experience on the desktop, this was his first major project involving QML on mobile devices.


MVE offers a mobile data collecting application which uses sensors and mapping tools provided in modern mobile phones. This was developed on iOS and Android. While the two apps shared a C++ data serialization layer, the UI and all the sensor code was done using the native platform toolkits. Hence, all the complicated things that mattered had to be done twice: handling the GPS and other sensors; showing data on the map and drawing overlays; the entire UI and workflows, etc.
When building the tablet versions of the apps, we decided to investigate using Qt and QML in order to build a true cross platform application. After getting familiarised with the tool chain and QML, the core issues of the project were related to balancing the QML and C++ for the overall application architecture and identify the correct methods to handle the kind of interactive behavior users expect on mobile platforms.
We also had to handle the holes in Qt's support (no mapping solution), the platform specificities (DPIs, sensors, file system) and the places where Qt’s features where too limited compared to native solutions (view handling, keyboard avoidance, text input).
The resulting app uses QML for the touch interface, integrates with OpenGLES (via OpenSceneGraph) to map and data rendering. It accesses sensors for location and orientation data. Finally, where relevant, we use Qt and C++11 techniques to provide better performance.
The presentation will give an overview of all the tools involved in creating the application and focus on some key issues such as the map rendering, the use of sensors, the issues where Qt's support is not good enough.