[PyQt] QLineEdit vs. menu keyboard shortcuts
Nathan Weston
nathan at genarts.com
Wed Jun 29 14:50:58 BST 2011
On 6/28/2011 2:17 PM, Hans-Peter Jansen wrote:
> On Tuesday 28 June 2011, 19:56:35 Nathan Weston wrote:
> If you're subclassing QLineEdit anyway, what does stop you from
> overriding keyPressEvent to catch and accept() any unwanted key
> presses?
I can certainly do that, but it doesn't cause my QActions to trigger. I
could intercept specific shortcuts and manually trigger the QActions,
but then my QLineEdit subclass has to know about all the menu items,
which is pretty ugly.
The interaction between QAction shortcuts and widget-specific shortcuts
is a little strange. I've written a little test program: it's a
QMainWindow with some menu items and a QLineEdit subclass as the central
widget.
The first menu item has Ctrl+R as its shortcut, which doesn't clash with
anything in QLineEdit. If I type Ctrl+R, the action intercepts the
keypress event *before* QLineEdit gets it -- I never see a keyPressEvent.
The menu item shortcut has Ctrl+Z as a shortcut. If I type Ctrl+Z, the
QLineEdit gets a keyPressEvent, which causes an undo of the text. If I
ignore() the event, it disables the undo behavior, but my QAction still
doesn't fire.
I've attached my program. If you press Ctrl+Z it will print 'Foo
keyPress 16777249' (for the Ctrl) and 'Foo keyPress 90' (for the Z). If
you press Ctrl+R it just prints 'action' from the slot connected to my
QAction.
Does anyone understand what's going on under the hood here?
--
. . . . . . . . . . . . . . . . . . . . . . . . .
Nathan Weston nathan at genarts.com
GenArts, Inc. Tel: 617-492-2888
955 Mass. Ave Fax: 617-492-2852
Cambridge, MA 02139 USA www.genarts.com
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: test.py
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20110629/9aefd578/attachment.ksh>
More information about the PyQt
mailing list