All of those are equally supported on desktop OSes, Android and (not sure 100% here) iOS.
If you consider Symbian, too, then widgets are a no-go (but please, verify that with someone else, I've never had any Symbian devices).
I can't really address the QML vs. standard widgets question as I haven't used QML enough, but here are my thoughts on JS vs. C++:
Desktop and Android, AFAIK, should all work beautifully with any of the options you gave.
[quote author="sierdzio" date="1342969372"]All of those are equally supported on desktop OSes, Android and (not sure 100% here) iOS.
That is simply not true, the last two we all know aren't really "supported" and the community ports are incomplete, laden with broken or missing features.
On the subject of which is more portable - If a platform supports native C++ Qt, it is likely to also support QML, which is merely an API written in C++. That being said, with QtQuick2 there is a requirement for OpenGL and plenty of stuff is done in hardware, which might be a portability issue, whereas in C++ you can stick to doing everything in software, which is the case of QtQuick1 as well.
Both the Android NDK and the apple SDK support native C++, so even if Qt is not supported you can still write the core of your app in C++ and just do different frontends in the target device native framework.
Best case scenario for portability is you write your application and that's all, no extra efforts are needed to run it on different platforms, but for Qt this applies only to desktop platforms, and not always 100%. If your application is simple you might have better chances going for the HTML/JS combo, which is more portable.