When I first saw the news about Nokia switching to Windows Phone back in February 11th, 2011, one of my toper most concern was the future of Qt framework. In my mind the only way this radical change from Nokia could make some sense if Qt support would come to Windows Phone. Apparently I wasn't the only one to think so, as there was a rather "lively" conversation in different forums where Qt developers demanded Qt support for Windows Phone. Alas, it become soon clear this was not going to happen. But was it really alas?
I do not hide the fact I was rather upset to find out Qt was not going to be supported in Windows Phone. I've been developing in Qt for some time now and I really love it. The Qt SDK has become increasingly better during every update. While in the beginning it wasn't very straightforward to upload apps made in Qt Creator to Nokia Store, now it's rather simple. The way I can run code from Qt Creator with my Nokia N950 via a WLAN connection is just so convenient.
Yet, I was no stranger to Microsoft's Visual Studio either. In fact, I've done most of my coding in Visual Studio. Just not for mobile devices. But I cannot deny that Visual Studio is really powerful and good. I just wasn't so sure how well Silverlight, XNA and C# would work for mobile development. The was only one way to find out, so I started my first project in Silverlight and C# using the Windows Phone SDK 7.1.
The first thing that really struck me was how good the Windows Phone Emulator was. Yes, in Qt Creator there is the Qt Simulator. But it never worked exactly as in the mobile device. It looked different and often behaved differently too. The buttons and dialogs are different than in the device, which is really annoying when you are trying to fix the UI. So much so that I stopped using the Qt Simulator altogether. Perhaps in the latest versions of Qt SDK it works better, but as I said, I don't use it anymore.
Not so with Windows Phone Emulator. It looks and behaves exactly like a real Windows Phone device. On top of that, once it is loaded, it's really quick, which makes debugging so much faster than uploading it to a device, running it, finding out a button isn't working properly, go fix the typo, upload it again to the device and run it to find out I made another typo when fixing the previous typo. With Visual Studio and Windows Phone Emulator this normal routine when I'm trying to code takes just a few moments, while in Qt Creator it often takes just enough time to lose my coding inspiration.
Now when it comes to UI, Qt has a really powerful framework called Qt Quick. It allows building highly dynamic custom user interfaces with cool transitions and effects. In my opinion QML is much better than XAML, which is used building interfaces in Silverlight. Based on this alone, one could argue that creating a nice user interface is easier using the tools available in Qt SDK. Well not quite. With Expression Blend, which is part of Windows Phone SDK, I can make a nice looking user interface with animations and all, without writing any code and in almost no time at all. Yes, I still think Qt Quick is more powerful, but I can do all that I need to do with Expression Blend and, more importantly, with much less effort.
When it comes to the actual business of code, which one I think is better? Qt C++ or C#? Once I got used to the Signals and Slots and everything else used in Qt C++, I though there could be nothing better. When I began to look into C#, the first thing that struck me was the missing header files. Apparently in C# you don't need them. Perhaps this is not the correct way of doing things and it might take more time to compile the code, but I don't care. This means that I have to code less and that is a good thing. While I'm still haven't used C# that much, the little I have, I do like. I'm simply amazed how much I can do with so little effort! Yes, I need to relearn how to do certain things, but I think it's worth it.
So, which one I think is better? Qt SDK or Windows Phone SDK? Well I still have very little experience with Windows Phone SDK, so I cannot say anything conclusive yet. Both are very capable SDKs. Both have they strength and weaknesses. Both enable developers to create amazing apps and games. In the end it probably is just a question of preferences. But personally I'm starting to like Windows Phone SDK. It just feels more polished and it's simply so quick to get things done with it. Yes, it might not be exactly native, but I don't care. As long as I can do my stuff with minimal effort, I'm happy! To anyone who has grown to love Qt, I do recommend trying Windows Phone SDK. It's very different than Qt SDK, but also very good.