Hi,

On 2014-02-11 21:15, Dietmar Schwertberger wrote:
I tried my Maemo/Fremantle app without a theme.
As I would like to stay compatible to Maemo and Windows, I would prefer the QtWidgets solution for some time.

Even if you were to use QtWidgets (which I strongly suggest not using), you would still have to manage Qt 4 vs. Qt 5 differences (as you probably won't be able to use Qt 5 on Maemo, and even if, I don't think the Maemo 5 themeing has been forward-ported to Qt 5).

You can stay compatible with Maemo 5 and Windows by using QtQuick 2.0 as well:

- For Maemo 5, use pure QtQuick 2.0 (or use the QtQuick 2 port of Qt Quick Components[1])
 - For Windows (and Linux, Mac OS X) use Qt Quick Controls[2]

[1] https://github.com/nemomobile/qt-components/tree/qtquick2
[2] http://qt-project.org/doc/qt-5.1/qtquickcontrols/qtquickcontrols-index.html

The major problems:
- When I open a second window, on Maemo I use the stacked windows attribute. On Sailfish that's not available, so a second window opens. The second window then is shown on its own in the multitasking view. This could probably be fixed using QStackedWidgets, though.

Don't open a new window; just show the view inside the first window. Only having one window open also means that the window manager has a much easier time doing memory management, as it doesn't need to keep hidden surfaces around, and the toolkit (Qt Scene Graph in the case of Qt 5) can presumably do a much better job of not rendering / storing a screenful of every page.

This isn't really a Sailfish OS-related "problem", though.

- The menu bar is shown just like in Windows not as pulleye. When you open the menu, again a full window is opened.

Don't use menu bars. That's a WIMP[3] paradigm that doesn't necessarily apply to touch interfaces.

[3] http://en.wikipedia.org/wiki/WIMP_%28computing%29

If I had the same problems on Windows, I would assume that I could get the (window) handles of the underlying windows/widgets/whatever and do some win32 calls to fix the problems. Maybe on Sailfish that's possible as well, but there's no documentation...

Some inspiration for doing cross-platform Python application development using Qt 5, Python 3 and PyOtherSide (assuming the subject of this threads is still relevant):

- Core and glue code, plus Desktop and generic QML UI: https://github.com/gpodder/gpodder-ui-qml
 - Sailfish UI: https://github.com/gpodder/gpodder-sailfish

The core and glue code (main.py and stuff in common/ in gpodder-ui-qml) is used by all UIs. The Desktop UI (desktop/ in gpodder-ui-qml, very barebones) uses Qt Quick Controls and gives you native UIs for Linux, Mac OS X and Windows. The "generic QML UI" is just using pure QtQuick 2.0 and can be used on (touch-based) platforms for which you haven't written a UI yet. And then for every platform you want to target specifically (such as Sailfish OS), just use the common code and write a native UI on top of that, with the native components set - that'd be Sailfish Silica for Sailfish OS, Ubuntu Components for Ubuntu Touch, Cascades on Blackberry 10 [yeah, no qt5 - ignore that for now], etc...

With Qt Quick Controls, the excuse "I want it to also work on the Desktop" doesn't work anymore. QML is good.

Awesomest article in that area is probably still the one from Attila, which I highly recommend you read:
http://achipa.blogspot.co.at/2011/07/qt-components-story-of-ugly-qwidgetling.html

HTH :)
Thomas
_______________________________________________
SailfishOS.org Devel mailing list

Reply via email to