Why Qt for mobile APP Development ?

April 6, 2016 — 10 Comments

Mobile Business Apps

dreamstime_xs_14156598

As you probably know the last 4 years I mostly developed native BlackBerry 10 apps for business usecases in SMB or Enterprise. Many apps are running as inHouse apps via BES12.

Last year BlackBerry introduced the first BlackBerry smartphone running a secured Android: the BlackBerry PRIV – a slider:

priv_image

 

This year next two Android devices will follow: one fulltouch and one with integrated keyboard – both in a lower pricerange as the PRIV.

BES12 in the meantime makes it easy to manage Android, BlackBerry, iOS, Windows devices and supports Android for Work, Samsung, iOS9 etc.

bes12

I’m still developing BlackBerry10 apps for customers targeted to BlackBerry only, but on the other side there are more and more usecases and customers looking for x-platform apps in the enterprise.

What’s the best way to develop x-platform mobile apps ?

There’s not THE answer – as always: ‘it depends…’ (There’s a Video from my MobileTechCon session where I explain this in detail)

For me these are the most important requirements:

  • native feeling
  • performance
  • re-use of code

If you’re coming from web development there are some great frameworks as

You can develop nice looking apps, but I’m not a web developer, don’t like mixing HTML and JS and also there’s nothing I can re-use from my existing BB10 Apps. Developing complex apps with HTML5/JS also can end with slower performance.

Do you have knowledge in C# ? Then

might be the best for you, even because Microsoft just Open Sourced Xamarin.

There’s another interesting project:

Flutter uses dart and supports Android and iOS from a single codebase, but Flutter is in Alpha at the moment.

Native BB10 apps are based on Qt 4.8/C++/QML(Cascades UI Controls). So what about

qt

Qt exists since more then 20 years and supports many platforms and since some time you also can develop mobile apps.

But in the past there was no out-of-the-box support for mobile UI and Navigation controls, no support of different density etc. You had to implement this by yourself. For me this was a no-go.

This has changed completely with Qt 5.6🙂

As part of Qt 5.6 there’s a Technical Preview of qt.labs.controls providing all you need for mobile apps: UI and Navigation controls in three different styles:

  • Material (Google Design)
  • Universal (Microsoft)
  • Default (Qt specific)

Also light and dark themes are supported.

quick2_04

qt.labs.controls will be part of Qt 5.7 – comming out next 3 months – then named QtQuickControls2

QtQuickControls are ligthweight and much more performant as QtQuickControls1 because all the heavy stuff now is done in C++. More infos here.

Qt 5.6 also supports HighDPI on all platforms now. http://blog.qt.io/blog/2016/01/26/high-dpi-support-in-qt-5-6/

So now it’s the best time to give Qt a chance.

Wait a moment – what about the license costs ?

Qt is Open Source and dual-licensed – you can also use a commercial license. The use of Qt Open Source isn’t an easy decision for mobile apps – I have summarized it in this article.

But there are good news: Starting with Qt 5.6 there’s a new startup license for Independent Developers and Startups (Intro price 49$/month)

Why not Xamarin – some concepts sound similar ?

Only at the first view. There’s a main difference:

Xamarin is using ONE LANGUAGE (C#) to write mobile apps, but it’s NOT ONE CODEBASE. You still have to write different code for Android and iOS esp. because the underlying UI Controls from native platform are be used. This is good for native-UI/UX, but more work is required and less re-use.

Qt is also ONE LANGUAGE (C++/QML) , but also ONE CODEBASE. For common usecases you have to write Code only once. For some special parts you can execute code from underlying Android Java or iOS ObjectiveC.

For me another plus: I can re-use 80% of C++ business-logic-code from Qt4.8 and also some concepts like SIGNALS/SLOTS for great event handling.

easy-way-720-343

The Easy Path

You see – it’s not easy to decide.

My blog series here will give you some hints and an easy path to try it out.

Doing this as a Qt newbie without assistance is hard because Qt supports so many targets and UI can be build using different technologies

  • QtWidgets
  • QtQuick
  • QtQuick2-qt.labs.controls).

Also the IDE (Qt Creator) works different compared with Eclipse Momentic, Android Studio or Xcode. Needs some time to figure it out. On the other side Qt Creator masters a hard job to support many different targets / OS from Embedded to Mobile and Desktop.

Next weeks following my blog series you can find out if my x-platform-journey with Qt will be finished successfull😉

BlackBerry 10 Devs Attention !

Even if you only developed BlackBerry 10 APPs yet and no experiences with Android or iOS. Don’t Panic !

My blog series starts from the beginning (prepare Android / iOS devices, Install, …) – also for BlackBerry Cascades developers from time to time I’ll compare the code / concepts HowTo design the UI.


→ Next Article (Open Source vs Commercial License)

⇐ Home (Overview / Topics)


 

10 responses to Why Qt for mobile APP Development ?

  1. 

    Good article.

    I am using Xamarin.Forms which allows me to have a single codebase for iOS, Android, and Windows. Of course, no BlackBerry support yet.

    • 
      ekkescorner May 16, 2016 at 19:46

      thx. AFAIK using Xamarin.Forms you have single codebase, but no Material Design UX

      • 

        Well, the Android version looks like Material Design. The iOS version looks like iOS. The Windows version looks like Windows. There is nothing I am doing to get those UX effects. They are just baked-in.

  2. 
    ekkescorner May 16, 2016 at 20:11

    thx for the info

  3. 

    “C++/QML” is not a one language… The UI stuff (which is most significant in most apps) is done in ugly QML and JavaScript… while ony “back-end” can be written in C++… This is the real pain. I wish they’ve exposed full QML and controls (i.e. UI definition) to pure C++ side, so no more that js shit… This is the main reason I’m considering Xamarin.Forms – at least I can code in a decent language (C#) (compared to JavaScript…).

    • 

      as I wrote in my article, Xamarin is a way to go if you like to code in C#.
      For me QML is a great way to define UI – but as always: it’s a personal taste😉

      • 

        > , Xamarin is a way to go if you like to code in C#.

        I’d prefer pure C++/Qt if it were possible to develop with QML without JavaScript…

        But one thing to point out: with QML you can develop cross-platform apps, including *desktop* platforms, while with Xamarin/Xamarin.Forms you’re limited to mobile only… that makes me reconsider QML.

  4. 

    A lot of things have changed since the time this post was made. React native has improved in alot of ways. Thus making it implicitly difficult to look past javascript.
    I have used Qt for the past 3 years. But the rate of progression of Qt for certain mobile experiences is relatively slow. The QML language is fine perhaps the best have seen so far but a large chunk of it is still JavaScript.
    Qt’s attention seems divided at the moment and why the can claim that they want to be an all round cross platform framework its clear that their major concerns for now are on embedded technology and IoT not mobile.
    Is Qt really free? Yes you get a lot of tooling but what of the nightmares of deployment and updating.
    Aside from your blog series and a few articles from kdab particularly bogdan vatra. There aren’t any mobile centric Qt development tutorial series.
    I love Qt and would still continue to use it in some of my projects but for now I’m loving react, react native and electron.

    • 

      hi femi,
      a year ago I would have argumented same, but things are becoming better for mobile app development. Just back from Qt World Summit 2016 in San Francisco. There were some talks about Qt and Android (of course Bogdan Vatra), Qt on iOS (Mike Krus) or Qt on Windows 10 (Maurice Kalinowski).
      Qt for x-platform mobile apps is just at the beginning. Qt Quick Controls 2 are really nice and there’s development – take a look at new things coming up for 2.1 Qt isn’t only on embedded and devices – it’s also on applications (desktop and mobile). The Material and Universal styles are great for mobile – for embedded you would use (and customize) the default style of Qt Quick Controls 2. I’ll go on with Qt and see how well it is working. If they’ll fail – React Native would be the best alternate way.
      I’m an Independent Developer and be sure if things are going wrong I’ll also blog about.

Trackbacks and Pingbacks:

  1. Qt vs Xamarin | - October 2, 2016

    […] Why Qt for mobile APP Development ? : https://appbus.wordpress.com/2016/04/06/why-qt-for-mobile-app-development/ […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s