Qt Framework
As I have more experience with this and I can’t talk about others without having tested, I can suggest the framework Qt 5.2+. It caters well to some of the cases you mentioned, but not all. However, I will quote you to aggregate future research.
Qt is available under the Lgplv2.1 license (which can be used for commercial purposes). In addition to Gplv3 (open source) and also has a commercial license (which allows static link, support and etc).
Currently, for desktop Qt supports Windows, Linux, Mac OS X and Solaris. Already for mobile, supports Android, iOS and, from version 5.3, Windows Phone 8. It seems that they are also working on Tizen support. In addition to these, you can develop to Blackberry and Ubuntu Mobile reusing much of the code.
This is the part that even meets your requirements. The languages used by Qt for mobile are C++ and QML. Most of the work is possible with the QML (graphical part, more basic logic). However, QML is nothing more than a mix of Javascript with a CSS footprint. So, if you know Javascript and CSS, it has no difficulty.
Simulators depend on the platform you’re developing for. So it doesn’t depend on the tool. However, one thing you can do with Qt is compile for PC and test smaller modifications on it, which is much faster. So, you’ll only send the app to an emulator or device when you want to see the actual behavior.
At least for desktop Qt is complete, has a very large library and is well documented. Although the Opengl base works (using ANGLE for WP), I do not know if it is feasible to make complex games because the availability tools are clearly focused on application development and at most 2D games. I think the ideal is to use something specific if the goal is more complex games.
Qt is under development (usually release a new version every 4 or 6 months) and is well supported by the linux community (KDE, for example), but, I can’t say that it is widely used for mobile as this support was started recently.
Considerations:
The main advantage in this framework is ease and speed of development. The language QML makes it easy to develop interfaces that natively would take a lot of work. The operation between Android, iOS and Windows Phone is very close, differentiated only in issues really specific to systems.
Speaking now of disadvantages:
When there is a need to utilize native system resources, communication between Qt code and native code is complicated. And, as mobile support is recent, there are not many examples on the internet.
Qt libraries are very large. Applications will easily weigh 10MB, which can be bad for some users.
Not all modules are ready. Until last time I checked the bluetooth module, for example, it was not supported by all platforms. In version 5.3 (coming out in the next few weeks) the support for Android and iOS will be almost complete, but for Windows Phone, some modules will only be available in version 5.4.
Apps developed in Qt will not have the look and Feel system standard (not yet). What can be good and bad (depending on what you want to do).
Examples
For those who are considering closing the question, you could read this before: http://meta.pt.stackoverflow.com/questions/488/gorilla-vs-shark. You can confirm or change your mind.
– Maniero
@bigown excellent text, if you had read it in the beginning, some questions of mine would not have been closed. Regarding the question, it is too broad, it is a matter of going to google, will arise many opinions, just read, decide which to use and start experimenting... only you can answer.
– Filipe Moraes
Two more recommended readings for those who are closing this question: Many questions are being closed without discretion? and We must accept questions of recommendation?
– bfavaretto
Personal thanks for supporting texts.
– GarouDan