Ok, this post (and the parts coming – I’ll just split this so that it won’t become a too long read) might interest a bit more wider audience than the previous ones.
So once you’ve started with QtQuick, played around with the examples, maybe done some own UI components and a few views, the thing you start wondering is “so how am I supposed to tie all this together to make it an application?” QtQuick itself doesn’t come with any kind of application framework. Just the basic building blocks you’ve seen in the examples. I (and Wolfgang here) think it’s a great thing that it doesn’t, because such a framework can go wrong in so many ways and restrict innovation. Naturally that would also be against the QtQuick philosophy of being just a framework for constructing objects easily and declaring interactions. Of course you usually still need to have one and probably(?) the boys and girls in the QtComponents project are making one. But the best part is that even if what they are proposing doesn’t suit you, with QtQuick you can just toss it all and do it yourself with relatively little effort. I’m not saying an ubiquitous application/view framework doesn’t have merits, but for standalone apps which don’t need tight integration to other being able to roll your own in a few moments is pretty damn great.
So our goal here is to make a small QtQuick application framework with the following features:
Animated view switching
Support for loading views on demand
Context aware default screen furniture (Title bar, context sensitive buttons, navigation bar)
A neat performance trick
To demonstrate the features we’ll build an app that utilizes the aforementioned concepts and sells crap to little girls. I haven’t come up with the perfect name for this, but for now we’ll call it KittyApp. You’re free to use this idea to make a million (see, I give away great startup ideas too!) with this if you want. In that case though you should probably rename it Kittr, Catsy, Kittify, Paw*d, Pussio. us, Cattlr or LitterBox. Anyway… our totally awesome KittyApp will look like this: