Is Qt (or Qt Quick) the best for my mobile app?
-
Hi all,
I have some deep experience in C++, some but not very much experience in Qt console application, no experience in Qt GUI nor Qt mobile, but I have deep experience in mobile game development with non-Qt technology.
Recently I have the opportunity to work on a mobile app. I'm choosing the technology to use and currently I think Qt is the best, but I need confirmation from you experienced users.
My requirements on the app:
Cross platform. Must support IOS/Android, and Win mobile later, and there is also possibility to port to desktop (PC/Mac).
The GUI must be native look and feel on each platform.
Adapt to different screen resolution, thus the same app can work on both iPhone and iPad.
Allow me to make flexible and very customized UI.
One feature of the app is to playback live stream video, and manipulate each frame (apply filters, etc).
Seems my requirements are quite normal for a mobile app, so I think Qt should be the one for me, but I like to hear advice and experience from you. Is Qt enough for my need?
Also my other questions:
I should use Qt Quick rather than widgets for mobile, right?
Can I mix Quick and widgets on a single UI?
What's the binary size overhead from Qt? I can accept up to 10M overhead in the distribution package.
The license. Do I need to purchase the commercial license, or the free license version is enough for me to develop a mobile app?
Thanks in advance!
-
Hi,
With these requirements Qt sounds like a good fit. An other tool to consider would be Xamarin.
QML is for mobile (also for desktop), widgets are desktop only.
If your app is not opensource you definietly need a licence. If your app is opensource and you want to deploy your app into some appstore, you may steel need a licence, because some stores' conditions are incompatible with GPL. -
Thats right Qt is indeed LGPL. In my thoughts i was a step ahead, meaning that using the LGPL version of Qt in an opensource mobile app, you would most likely licence it with GPL. (As Gianluca wrote it much more clearly.)
Gianluca, you wrote the sizes based on dynamic linking, I assume. Wouldn't these sizes be reduced by static linking, which is enforced on iOS anyways?
-
[quote author="Gianluca" date="1418721608"]I strongly suggest to use always Qt Quick even for desktop.[/quote]
I do not (for desktop at least), but is my personal opinion, and of course others have theirs opinion. I'm involved in a mobile project (let's say medium size) and I chose to use QML for developing it. Of course writing the Ui in QML is indeed very easy. The problems is on the application startup, it take 10 sec to start with a few items (indeed I didn't use Loader). On the contrary the desktop version written with Qt widgets and with a lot and a lot of other Ui and a lot logic in addition start right away the user press double click on Finder or Explorer
@wqking my apk on Android with almost all dependencies: core, gui, quick, qml, multimedia, network is 9.7 Mb After Android decompress it, the application usage is somewhere on 35 Mb
-
Hi Cincirin,
9.7M for compressed apk or ipa sounds nice. I really don't care how much it is after it's installed on the user's device, nor do the users indeed.
10 seconds startup time? That's really terrible user experience for mobile application. Is it caused by the parsing of QML? Or anything else?
Is there any way to optimize the startup time? -
[quote author="wqking" date="1418735334"]9.7M for compressed apk or ipa sounds nice. [/quote]
I don't build it for iOS yet, maybe for statically linkink the ipa will be smaller
[quote author="wqking" date="1418735334"]10 seconds startup time? That's really terrible user experience for mobile application. Is it caused by the parsing of QML? Or anything else?
Is there any way to optimize the startup time?[/quote]Well maybe not exactly 10 seconds on startup, but almost there. I created a few items and javascript functions . As I said I didn't optimize the QML items creation with Loader (but not many items at startup). Of course QML parsing may be long-drawn, I don't know very much details yet, my experience with QML is quite new. Maybe these links are useful for you :-) : "QML Performance":http://qt-project.org/doc/qt-4.8/qdeclarativeperformance.html and "Performance Considerations And Suggestions":https://qt-project.org/doc/qt-5-snapshot/qtquick-performance.html