
Digia releases Qt 5.2 with Android and iOS support - hackhackhack
http://thenextweb.com/dd/2013/12/11/digia-releases-qt-5-2-android-ios-support-previews-windows-rt-launches-qt-mobile-edition/
======
icefox
Anyone have a good link (video? blog entry?) discussing what problem QML
solves and why it is better than other solutions? Within the docs the biggest
thing I am able to find is the following hand wavy statement:

"QML is a user interface specification and programming language. It allows
developers and designers alike to create highly performant, fluidly animated
and visually appealing applications. QML offers a highly readable,
declarative, JSON-like syntax with support for imperative JavaScript
expressions combined with dynamic property bindings."

I have heard about it for a number of years, but never been able to wrap my
head around everything it is offering and why various choices were made.

~~~
Timmmmbob
I've used QML / QtQuick for a while. Here are my thoughts

1\. It makes writing UI state machines _much_ simpler since it is declarative.
Instead of saying "when this information changes, update the UI", you just say
"This bit of UI shows this information" and then it updates it does it
automatically.

2\. Animation is also much easier (and possible at all).

3\. Layout is... myeh it is not so good actually. UI files made it really
really simple, but QML has a kind of Android-like overcomplication to it. For
example I have no idea how to have two buttons above each other with the same
width and have that width the minimum required to fit them both. With the old
system I didn't even have to think about that.

4\. Javascript was a _seriously_ bad choice. Fortunately you don't write that
much of it (and the non-javascript parts of QML are well designed). The
biggest problem is that you have to run code to have even the vaguest idea
that it will work (probably you misspelt a variable). With C++ if it compiles
you at least have _some_ idea that it will work. Also there is a lot of hassle
converting between C++ values and javascript objects. Particularly for
lists/vectors of things which work very badly and... to be honest does not
really work.

5\. It does force you to separate your logic and UI - kind of like HTML/CSS.
This is a good thing generally.

6\. Once you've done the hard C++ work, building the UI is much quicker and
less verbose than using the old system. It is also easier to change around.

In generally they are going in the right direction. They just made a huge
mistake by choosing javascript. They've ended up writing their own javascript
VM too, so I don't know why they didn't take the opportunity to use a sane,
strongly typed language.

~~~
alok-g
Is using Javascript mandatory (for common uses)?

~~~
daliusd
You can keep it minimal if you want to. In some situations you can avoid
javascript completely (e.g. QML based framework covers all details for you).

------
rwbt
I have to say it again - I'm so glad Qt didn't end up at Microsoft.

------
yapcguy
_> You can download a 30-day trial of Qt Enterprise from Digia’s Qt site
(version 5.2 is slowly trickling out throughout the day). The open source
version can meanwhile be snagged from Qt Project._

Does anybody know the difference between the Enterprise and Open Source
versions? Is it just tech support or is the Open Source version going to lack
the features we really need?

~~~
kbutler
The license is the critical feature: the open source version is available
under GPL and LGPL. Beware of the implications for iOS development with
GPL/LGPL (have to distribute source or .o files for your application).

~~~
chacham15
> have to distribute source or .o files for your application

Not if you dynamically link

~~~
smnrchrds
Do iOS guidelines allow dynamic linking?

~~~
blub
AFAIK it's not allowed, so Qt commercial is actually the only option for non-
OSS on iOS.

------
malkia
Is this in the git? I only see the v5.2.0-rc1 tag:

    
    
      Q:\qt5>git ls-remote && git tag
      From git://gitorious.org/qt/qt5.git
      ... <removed>
      qt-v5.0.0-alpha1
      v5.0.0-beta1
      v5.1.0
      v5.1.0-alpha1
      v5.1.0-beta1
      v5.1.0-rc1
      v5.1.0-rc2
      v5.1.1
      v5.2.0-alpha1
      v5.2.0-beta1
      v5.2.0-rc1

~~~
malkia
I just saw that tag v5.2.0 has been added.

------
stusmall
Does anyone have more info on what the Android/iOS support is like? Does it
give native style low level binding ala Mono or does it try to be a generic
API that is a write once run everywhere kind of thing?

~~~
cheez
Write once, run anywhere kind of thing.

Accessing native functionality is actually not easy. I'm sure they will be
addressing this at some point.

~~~
pjmlp
> Write once, run anywhere kind of thing.

Usually this ends up being "debug everywhere" kind of thing, based on my
experience, regardless of the technology.

~~~
cheez
I'm sure it's even moreso given the different form factors of the various
devices. I've given it a decent run and I think it's actually a pretty good
system.

------
dariopy
Does this mean we can create Android and iOS apps with Python (via e.g. PyQt)?

~~~
daliusd
Actually QML apps can be written only using QML + Javascript. Performance or
platform dependent parts can be written in C++.

Some Qt based frameworks experience. Ubuntu Touch chose to develop apps using
Javascript only where possible. BlackBerry apps support both Javascript and
C++. There are people who believe that QML must be used only for UI and all
logic must be written in C++. IMHO Javascript is good choice as it is fast
enough in many cases.

As for Python that's not what you want to use with QML and pure Qt is not what
you want to use for mobile apps.

~~~
Aldo_MX
Javascript in iOS is not a good idea, unless you are just prototyping/building
a basic app.

~~~
daliusd
Maybe. My experience (not Qt based) with Javascript on iOS is not very bad (I
expected worse). While I don't like that Apple created fake problems using
script languages in iOS.

------
landr0id
Anyone know what's up with the Mac extras overview page? It simply does not
exist [1] whereas the Windows one does [2].

[1] [http://doc-snapshot.qt-project.org/qdoc/qtmacextras-
overview...](http://doc-snapshot.qt-project.org/qdoc/qtmacextras-
overview.html) [2] [http://doc-snapshot.qt-project.org/qdoc/qtwinextras-
overview...](http://doc-snapshot.qt-project.org/qdoc/qtwinextras-
overview.html)

------
chacham15
If I have a desktop app written using Qt libraries directly (i.e. no QML, .ui
files, etc) will this new version allow it to run on iOS and Android?

~~~
blub
I did a small test on iOS with the RC2 and the widgets were shown, although
the theme was similar to some Linux distro rather than iOS native.

------
c0g
Can I call a Java library (say, google play services) from Qt without having
to jump through JNI hoops?

~~~
dljsjr
At it's heart, Qt is basically a C++ framework/library, so it's just like
invoking Java from regular C++ code.

In other words, JNI is involved.

------
candl
Can't seem to find Qt 5.2 anywhere. Are the installers yet to be released?

~~~
japaget
From the article: Update at 11:00 AM EST: Digia has contacted TNW [TheNextWeb]
to say that “some last minute technical issues” have delayed the launch until
December 12. Downloads are now expected to go live at 10:00 AM CET (4:00 AM
EST) [9:00 GMT], or about 22 hours later than previously planned.

------
puppetmaster3
I have to say using 'native' tools sux big time.

Lets hear it for 3rd parties!

------
jbeja
QtQuick vs Kivy?

------
zura
Lets hope that tools and frameworks like this will be widely adopted, thus
more and more jobs requiring these skills, rather than that crap, over-
engineered "native" SDKs/frameworks...

~~~
stusmall
What's over engineered about Android? I work with it daily and find it quite
nice and it really didn't take too much effort to dive into.

Also if you want something small and simple, I think QT might be the wrong
tree to bark up. I've only used it on casually used it on desktop but it is
not a small framework.

~~~
zura
Just too much plumbing and boilerplate code is needed to do some simple
things...

Agree, that for some small projects, Qt can be overkill.

