Is it more effective to program cross-platform or native development? Is the programmers control restricted by cross-platform development?
One particular case I want some information about is developing for the Android platform (is developing native for Android more effective than developing with something else where you code once, build everywhere? [i.e., Qt Creator]).
Well both have their advantages and disadvantages. If you stay native and decide later you want to port to another platform you will have to change out the native code. If you plan to do it on multiple platforms, then I would say try to stay with cross platform libraries that support your interested platforms because then all you have to do is get the appropriate tools and build the appropriate libraries and then just rebuild for that platform.
As for Android, I think Eclipse is the editor I see recommended normally. I've not used Qt Creator for that specifically so I don't know how well it is. Sorry I can't be more help on that.
I think cross-platform development for Desktop and Laptop Computers is more practical for me because I want to target all desktop environments, and learning the native language and libraries for each OS (which includes (and sometimes includes deferent versions of) Linux, Mac OS X, and Windows).
Thus, the question of Cross-Platform v. Native applies to Android and iPad/iPhone development.
Well depends on what libraries you are using. Some have support for Windows/Linux/Mac/Android/iOS/etc. so that you only have to have the tools and tweak your code a little and recompile to get it working. If you did everything in native code you would have to write and code several different versions of one application to make it work on other OSes and then debug it several times on each computer.
The only catch is, to develop on Mac, iPad, iPhone you have to have a Mac while you can have Linux to develop for Linux and Windows or Windows to develop for Windows and Linux (just have to have the right tools to do it for the Linux/Windows).
It really depends on what you end up wanting and your preferences.
I'm not 100% sure because I've read that you have to use Xcode to develop apple products. You may have to read a little more into that part for yourself unless someone that develops for Mac knows the answer. I primarily stay to Windows and Linux, but keep read up on the other OSes.
As for Android, you can develop for it but from what I recall reading the emulation is a pain to run so it is more advised to have a device running Android to run in developer mode to debug and test your application(s).
I think they all have their own specific set of tools and libraries you have to use for Apple and Android, but don't quote me on that so I don't know if Qt is an option for working with GUI on those OSes or if they have their own GUI libraries to use.
qt/boost is one of the more popular cross platform libraries. qt i would image would be fine on android. for mac you dont need xcode. however it makes it a lot easier to develop for ios if you have xcode (you might actually need it for ios. i havent done it in a while). i would imagine that you cant use qt with ios because apple heavily uses obj-c with the cocoa framework
Cross-platform and native are not opposites. "Native" means that the source code compiles to a program that is directly executable by some CPU. A source that can be compiled for a number of CPUs is therefore also cross-platform. Qt, for example, is a native framework in desktop platforms but not necessarily in mobile platforms.
"Native" is meant to contrast other execution modes, such as virtualization, interpretation, etc.
C++ and QT is not made for making Android apps. There's probably a roundabout and complicated way of making that work, but Java + Eclipse is standard. I suppose you could probably use Java + Netbeans or something, but why would you when almost whatever you choose will be a worse option.
@Mats: boost isnt made for windows, but that doesnt mean it doesnt work well with it. QT has an api for writing android apps. and the android os supports c++. there is an sdk that you use to develop c++ apps and "compile" them into apks
What makes Java and Eclipse better than C++ and Qt?
Java uses native UI controls and Qt uses non-native. Which translates to much better user experience with Java apps, than Qt ones. And I really don't know, why you'd write apps in C++? Performance is not a problem for majority of those apps and even if performance is importrant, you can use NDK to write critical parts in C/C++ and then link to Java. Additionally, Eclipse/IntelliJ IDEA are years ahead of any C++ IDE.
Additionally, Eclipse/IntelliJ IDEA are years decades ahead of any C++ IDE.
Fixed that for you.
For any serious android development, you'll want to have one or more devices that you can live load your builds on for routine testing. This makes the development cycle much faster unless the android emulators have freakishly improved since I used them last.