[Qt-interest] How install shortcuts for multiple widgets?
Wilhelm
wilhelm.meier at fh-kl.de
Wed Feb 9 10:57:25 CET 2011
Am 09.02.2011 10:40, schrieb Jaco Naude:
> I meant the action's shortcut context:
> http://doc.qt.nokia.com/latest/qaction.html#shortcutContext-prop
>
> <http://doc.qt.nokia.com/latest/qaction.html#shortcutContext-prop>I
> agree with you that it should work they way you did it if your actions'
> shortcut context are all set to Qt::ApplicationShortcut.
Mmh, I don't agree here (see below): it should work (I mean: to have
multiple actions on different widgets using the same shortcut and not
getting the ambiguous error) with Qt::WidgetShortcut!
>
>
>
> On Wed, Feb 9, 2011 at 9:16 AM, Wilhelm <wilhelm.meier at fh-kl.de
> <mailto:wilhelm.meier at fh-kl.de>> wrote:
>
> Am 09.02.2011 10:10, schrieb Jaco Naude:
> > Are you setting the action's context to be application wide?
>
> What do you mean: I'm not aware of an action context, I only know
> shortcut context ...
>
> >
> > On Wed, Feb 9, 2011 at 8:31 AM, Wilhelm <wilhelm.meier at fh-kl.de
> <mailto:wilhelm.meier at fh-kl.de>
> > <mailto:wilhelm.meier at fh-kl.de <mailto:wilhelm.meier at fh-kl.de>>>
> wrote:
> >
> > Hi Jaco,
> >
> > Am 09.02.2011 06:35, schrieb Jaco Naude:
> > > Hi Wilhelm
> > >
> > > One way to solve the problem is to have a front-end action with
> > multiple
> > > backend actions. The active backend action will then depend
> on the
> > > widget that has focus and you connect the triggered() signal
> of the
> > > frontend action to the triggered() signal on the backend
> action etc.
> >
> > Yes, that was my first idea: to have a say ProxyAction for all
> those
> > actions. But I thought there must be al solution in Qt allready.
> >
> > Then I came across the shortcutContext property of QAction and
> tried to
> > set the contexts of all the "overlapping" actions to
> Qt::WidgetShortcut
> > instead of the default Qt::WindowShortcut. But I noticed no
> change !?!
> >
> > The description of Qt::WidgetShortcut says:
> > The shortcut is active when its parent widget has focus.
> >
> > So if I install an action on a QWidget I would assume that the
> actions
> > shortcut is only active if the QWidget has focus, right? But
> this seems
> > to be broken somehow. Or do I misinterpret something?
> >
> > >
> > > Look at the screenshot below which shows what I mean:
> > >
> http://www.qtilities.org/images/screenshots/conan_screenshot2.jpg
> > >
> > > The "Expand All" action exists at multiple places (10 in
> this case)
> > > where I have tree views. The one that has focus must be the
> active
> > > backend action, in this case it is a widget called
> > > "Qtilities.Core.ObjectPool". Note that it shows it is active and
> > the the
> > > connection analyzer shows us that the triggered() signals are
> > connected
> > > correctly.
> > >
> > > To activate your action will depend on your implementation.
> In my
> > case I
> > > use contexts with IDs to define what the active context is. For
> > example
> > > if I want to activate the action in the QEvent::FocusIn of
> my widget I
> > > install an event filter on the view and do something like this:
> > >
> > > bool MyWidget::eventFilter(QObject *object, QEvent *event) {
> > > if (object == d->tree_view && event->type() ==
> QEvent::FocusIn) {
> > > CONTEXT_MANAGER->setNewContext(contextString(),true);
> > > return false;
> > > }
> > > }
> > >
> > > See
> >
> http://www.qtilities.org/docs_master/page_action_management.html for
> > > more details.
> > >
> > > Hope this helps,
> > > Cheers
> > > Jaco
> > >
> > >
> > > On Tue, Feb 8, 2011 at 9:06 PM, Wilhelm
> <wilhelm.meier at fh-kl.de <mailto:wilhelm.meier at fh-kl.de>
> > <mailto:wilhelm.meier at fh-kl.de <mailto:wilhelm.meier at fh-kl.de>>
> > > <mailto:wilhelm.meier at fh-kl.de
> <mailto:wilhelm.meier at fh-kl.de> <mailto:wilhelm.meier at fh-kl.de
> <mailto:wilhelm.meier at fh-kl.de>>>>
> > wrote:
> > >
> > > Hi all,
> > >
> > > what is the "right" way to install shortcuts (say
> Ctrl-S) without
> > > getting the "... ambiguous shortcut ..." error?
> > >
> > > If I have an application menu with an action using shortcut
> > Ctrl-S and
> > > e.g. several other widgets which also install this
> shortcut I
> > get the
> > > above error.
> > >
> > > So the question is, how to setup up an applications-wide
> > shortcut Ctrl-S
> > > that saves a file A if triggered in a texteditor widget A if
> > that has
> > > focus, or saves a file B if triggered in a texteditor
> widget B
> > if that
> > > has focus?
> > >
> > > I tried using the shortcut-context and setting it to
> > WidgetContext but
> > > without luck.
> > >
> > > Any hints?
> > >
> > > --
> > > Wilhelm
> > >
> > > _______________________________________________
> > > Qt-interest mailing list
> > > Qt-interest at qt.nokia.com
> <mailto:Qt-interest at qt.nokia.com> <mailto:Qt-interest at qt.nokia.com
> <mailto:Qt-interest at qt.nokia.com>>
> > <mailto:Qt-interest at qt.nokia.com
> <mailto:Qt-interest at qt.nokia.com> <mailto:Qt-interest at qt.nokia.com
> <mailto:Qt-interest at qt.nokia.com>>>
> > > http://lists.qt.nokia.com/mailman/listinfo/qt-interest
> > >
> > >
> >
> >
> > --
> > Wilhelm
> >
> >
>
>
> --
> Wilhelm
>
>
--
Wilhelm
More information about the Qt-interest-old
mailing list