On Tue, Dec 11, 2012 at 1:39 PM, Alan Alpert <[email protected]> wrote:
> QAction served widgets well as an abstraction for an "Action" which is
> exposed to the UI in a platform specific manner. This was shared
> between menus and toolbars and some other things. I think we'll need
> something similar for QML, so that the QtQuick controls can provide
> platform styled menus, toolbars, and perhaps some other things. This
> is particularly important for those working on the modern
> cross-platform challenge of scaling to different devices - we need the
> actions generic enough to fit a phone's itty bitty little menu as well
> as the unifed menubar that spans over 2000px on today's Macs.
>
> QAction can't be used straight, it's in the QtWidgets library (and has
> QWidget* in the public API - it's not moving), so we need a new API
> for this. Ideally though it would be fairly similar to allow for
> developers to easily move to it, maybe to make it easier to integrate
> the two better later. There was a discussion at Dev Days, here's what
> we came up with initially. Note that I'm using QML to prototype the
> API ;).
>
> Action type:
> QtObject {
>     property string text
>     property url imageSource
>     property string shortcut
>     property bool checkable: false
>     property bool checked: false
>     signal triggered(bool checked)
> }

Where are you proposing this goes?  To me it looks like a candidate
for Qt Components (or is it Controls now).

[snip]

>
> In addition to the API review of that prototype, the following
> questions that come to mind:
> ActionGroup could be dropped in favor of adding a subactions property
> to Action. But Aaron brought up a good point that this makes it a lot
> more discoverable how to implement nested menus/actions. Is it worth
> it to split up Action/ActionGroup?

I don't like the idea of subactions.  Nested menus are the only case I
can think of that uses it, but its always there in the API.

> Given that that UIs from the '90s can be implemented with widgets
> still, are exclusive and checkable used by modern UIs? i.e. Is it
> worth putting them in a new API?

Probably not very common in menus now, but an action is also useful
for checkboxes and they are quite checkable.

> The QMenu API allows for adding menu separators too, but I haven't
> seen those in apps for a while. Is it worth adding another type or
> flag to integrate separators into the Action API?

A separator needs none of the API present in an Action.  They are unrelated.

> In that example all the ActionGroups set collapsible to true, but that
> could just be because that's the functionality the example is
> demonstrating. ActionGroups can also be used for grouping actions and
> in that case you may not want collapsible. Should collapsible be true
> by default?

"collapsible" is another property which seems to be quite tied to a
menu's implementation.  What is the overall goal of these types?  Are
they to be added somewhere quite core, e.g. QtQuick, or are they to be
added to Components?

Br,
Martin.
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to