Thanks for elaborating! :)

Btw. will this payback always in QML (so let's assume Fremantle Qt 4.7.4)
or only on Sailfish?
--
Marcin


2013/12/7 Thomas Perl <th.p...@gmail.com>

> On 06 Dec 2013, at 17:46, Marcin M. <marmistrz...@gmail.com> wrote:
> > 2013/12/6 Wim de Vries <wsvr...@xs4all.nl>
> > On 12/05/2013 06:41 PM, Marcin M. wrote:
> >> A style for plain Qt which would display with the native look & feel
> (compare the unsupported and buggy meegotouch-qt-style) would be great too!
> > > Do you mean QML or QWidgets look&feel?
> >
> > I mean: use plain Qt, get Silica look&feel. Just like on Fremantle: you
> use Qt, but get the gtk theme look & feel.
>
> (walls of text here again; tl;dr: try QML, you’ll like it, it is better
> [easier to write + faster to render] than QWidgets for implementing UIs)
>
> No, that won’t be possible, and even if someone were to try and replicate
> it (with much time and dedication, one can “fake” enough of it to look
> almost like Sailfish Silica, I’m sure), you wouldn’t achieve the same
> visual quality (note how the pattern of e.g. buttons and switches is not
> tied to the button and switch, but rather “lights up” the background when
> you scroll? cannot see that in screenshots, but only when you try it in the
> emulator / on the device) and performance (QML2 with the Qt Scene Graph can
> utilize the GPU quite well, and from what I’ve seen with Qt 5.2, this is
> only getting better).
>
> QML is actually quite nice for defining how the UI looks. See it as (in
> QWidgets terms) “more powerful versions of .ui files”. And don’t see it as
> “now I have to code my app in JavaScript”, that’s not the case - you can
> use as much or as little JavaScript as you want, and do the important stuff
> in C++.
>
> Granted, most of the time you actually have to use JavaScript expressions
> to set some property values, but the expressions look syntactically not
> much different from their C++ counterparts, and you get the property
> binding (automatic recalculation + update when a value the expression
> depends on) for free. And that’s also the reason why (short from moc-style
> pre-processing and custom language extensions on the C++ side) there is an
> actual need for dynamic languages like JavaScript in QML - you can’t do
> property bindings in “pure” C++ code, as the AST of the expression is lost
> after compile time.
>
> Yes, it requires you to learn something new, and yes, it’s hard in the
> beginning (it was for me) until you start realizing that you’re not
> modifying the UI tree from your C++ code anymore, but rather, you access
> the C++ code/state from your UI. The C++ code only needs to expose the
> state / content / database in a nice way (Qt models, invokables,
> properties, signals and slots, etc..) and then you can access these from
> the UI whenever you want.
>
> And if you get the properties on your C++ objects right, with
> notifications and all, you never have to worry when (for example) to set
> your button to enabled / disabled manually (mybutton.setEnabled(true),
> etc..), because you only define e.g. on the C++ side a property that tells
> you if you’re currently processing something or not (say a boolean property
> “processing”) and then on the QML side, you can easily say “Button {
> enabled: !myobject.processing }” and the button enabled state will always
> be right, and will be recalculated accordingly when the "processing"
> property’s value changes. This provides a nice way to split your backend
> from the UI and not worry about keeping your UI state in sync. You can even
> use that property in multiple places in the UI or not at all - the C++ side
> doesn’t change, which is nice (so you can e.g. have the same C++ backend
> for different QML UIs - one for phone, one for tablet, one for desktop,
> etc..)
>
> If that little JavaScript running there every time something changes
> sounds like too much overhead for you, think of it this way: The amount of
> CPU “wasted” by running JS in the QML case is saved (and paid back multiple
> times) by offloading big parts (not all) of the rendering from the CPU to
> the GPU.
>
>
> HTH :)
> Thomas
> _______________________________________________
> SailfishOS.org Devel mailing list
>
_______________________________________________
SailfishOS.org Devel mailing list

Reply via email to