On Mar 13, 2013, at 1:43 PM, Bache-Wiig Jens <jens.bache-w...@digia.com> wrote:

> Exactly. Being able to do pixel perfect layouts within the Qt Quick designer 
> is one of the arguments against an IOS QStyle implementation. I would like to 
> be able to see and run my apps _exactly_ as they would look on the device, 
> without having to test  and deploy on an IOS emulator through XCode.

By that logic we should get rid of QAndroidStyle, QGtkStyle, QWindowsStyle, 
etc. That's not an argument against an implementation merely existing. You can 
use the Fusion style for your project, and I'll use the iOS style for mine. 
There's no reason we can't have the best of both worlds.

Now on the technical issues, to use your own sentence against you, "it's not as 
bad as you think". You don't need to install event handlers within the style 
and do frame by frame updating hacks. All the iOS widgets inherit from 
UIControl, where you can set the highlighted (when you touch down), selected, 
and enabled/disabled states of a control; no need to fake input events to do 
it. Control styling is also more flexible than it seems. You can in some cases 
retrieve images for the individual parts of a control. A lot of the standard 
graphics can also be replaced with custom images, and through that 
functionality you can use trickery to do things like draw a slider's track and 
knob separately. The controls also provide some degree of metrics information 
(like text margins), and you can use trickery to do things like draw the 
backgrounds for left, middle, and right sections separately for a 
UISegmentedControl in selected and unselected states. Or the divider. I could 
even give you a slider with two knobs if you wanted. I've already started 
writing code for this and have been pleased with the results so far.

Also, I just have to respond to this: "it completely falls apart when you try 
to render something slightly complex like a slider, unless you update the 
position of the native handle and re-grab it on each frame" The second part of 
your sentence answers the first. I don't see how that's a problem at all. That 
is essentially the same way any styling API works - each frame, you tell it to 
render. Any internal state it might update as part of that process is not your 
concern. I know this is not the case but HITheme could be using a NSSlider 
internally, for example, and you'd never know it.

So, to summarize:

As Morten said, "The way to prove us wrong is of course to step up and 
implement (and maintain) such a style.". Therefore, I will implement and 
maintain QiOSStyle. Of course any help would be appreciated as well.

Now, I want to stress this fact: I'm trying to support everyone's use cases, 
not exclude anyone at the expense of others. QStyle is used by both widgets AND 
QtQuick.Controls. All of these use cases are perfectly valid: widgets + custom 
style, widgets + native style, QML + custom style, QML + native style.

So, the only thing left to say is that I hope the issue is not whether 
QiOSStyle is welcome in QtGui at all, but simply whether it can be technically 
achieved and whether there is someone to do the work. If it's the latter, then 
we're all set and can end the discussion, since I will do it. Otherwise, 
QiOSStyle will be on GitHub. I'd much prefer it to be upstreamed. 

PS - To everyone debating the merits of widgets vs QML in general: this thread 
is about the implementation of an iOS QStyle to draw native-looking controls 
for QWidgets AND QtQuick.Controls. Could you please continue those discussions 
in a different thread?
-- 
Jake Petroules
Chief Technology Officer
Petroules Corporation · www.petroules.com
Email: jake.petrou...@petroules.com
_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to