I used to code in Qt from before the times Maemo existed. The great thing about Qt was that, in gereneal, there WAS no #ifdef required (i you had it, it was considered bad programming or platform incompatibility). Whether you coded for XP, Mac or Linux, you used the same API. It was (still is) a really cool thing.
With mobile development this changed - my Maemo apps are already littered with #ifdefs as I want them to compile on my deskop, on Qt4.5 (for N8x0) and Qt4.6 (PR1.2), and chances are there will be another volley of #ifdefs for each release of Qt and each device (worse yet, every firmware release), and my Qt code starts looking as ugly as any bog-standard C++ code that is trying to be multiplatform. And that scares me as a developer, since Qt was supposed to (and did in the past) relieve me from that. And I’m not just talking widget libs here.
the "standard widget from code" approach. This will work everywere, look fairly localized but also the one that users usually refer to as "crappy looking community apps". No whizz, no bang. Adaptation already needed due to input technologies (fingerscroll, etc). Requirements: Qt
QtDesigner approach - similar to above, but using the QtDesigner UI editor. Speeds up UI development by a more visual way of assembling components. The downside is that QtDesigner does not know anything about mobile use, so you are missing out not only on the mobile-specific widgets, but also the generic look and styling - you do not see how your app will actually look on the device (the same problem Qt Simulator has). Requirements: Qt4.0+
GraphicsView approach - you draw your own stuff, no "classic" layouting, but you can use widgets and custom elements. More whizz, more bang, animation friendly, but requires a LOT of trial-and-error work. Requirements: Qt4.4+
MeeGo Touch framework - Features include standardized window navigation, list and other widget behavior, and common theming for components. Also known as MeeGo UI framework. Also known as DirectUI framework. Also known as DUI framework. Requirements: Qt4.6+, MeeGo API
MeeGo reference UX (handheld/netbook/etc) - UI implementation based on the MeeGo Touch Framework. Not released yet, so not clear how much customization a "pure meego touch" based app will require to fit in nicely. Requirements: Qt4.6+, MeeGo
Orbit - An UI framework, parallel to the MeeGo Touch Framework, initially for use on Symbian devices, but demonstrated to work on Maemo, too. Also known as UI Extensions for Mobile. Also known as Uiemo. Requirements: Qt4.6+, Symbian^4
Harmattan UX - like the MeeGo reference UX, but specific to the N900 successor. Requirements: Qt4.6+, MeeGo
QML - a Declarative UI tool, in effect a markup language that defines UI elements and their behavior in a declarative manner, allowing, snappy, whizzy UIs. Requirements: Qt4.7+
Qt Quick - the Qt User Interface Creation Kit, which consists of QML, a specialized editor in QtCreator and all-around support for the declarative approach. Also known as Qt Declarative. Also known as Declarative UI. Also known as Bauhaus. Requirements: Qt4.7+
To make things more tricky, these overlap a bit, so you can incorporate elements of one into the other, and there are often backports that allow technologies to be tested on previous versions. Also, did get more that four ways... I think I’m going to make a Qt/MeeGo dictionary