Porting from iOS to Qt

iOS applications are written in Objective-C, so direct code-level reuse is usually not possible when porting to Qt. Typically, the application design and assets can be reused, with the UI being redesigned and implemented in QML and the application logic rewritten in C++ and QML. Fortunately, Qt C++ code and the Qt class model bears enough similarity to Objective-C to mean that the rewriting of logic is not onerous.

The app's UI will probably need to be redesigned to provide the best usability on a Symbian device, due to differences in the UI style between iOS and Symbian. However, the extent to which you need to redesign will vary: a game, such as Angry Birds, will often have its own custom UI and may not need any redesign. However, if the application uses iOS's native UI elements, some redesign is likely to be beneficial.

When porting iOS web applications, it is likely that some code can be reused. And as you might expect, any application code in the server should be reusable.

For more information on mapping iOS UI designs to Qt, see Mapping iPhone UIs to Qt Quick.

Choosing a UI Technology

The two main options for implementing an app’s UI in Qt are Qt Quick and OpenGL ES. The UI of most apps and games, those without a significant use of real-time graphics, can be rewritten using Qt Quick and the original graphics assets. In addition, by using Qt Quick components it is easy to create a UI that is consistent with the Symbian and N9 UI styles. 3D games, games with fast graphics, or even apps that use special graphics effects will be best ported to OpenGL ES. If your iOS app uses OpenGL ES, the good news is that little or no rewriting may be necessary.

These applications are usually based on WebView in iOS: Examples can be found at http://www.apple.com/webapps/. There are two options for porting these applications: rewrite the app using Qt Quick alone, reusing the design and graphics assets of the original app, or use the Qt Quick WebView element and embed the web content from your original app.

Last updated 17 November 2011

Back to top