To answer my own question, if you reimplement the "bool event( QEvent* event )" handler, you can catch QEvent::ShortcutOverride events that represent shortcut sequences that you want to interpret differently in the widget.

Using this solved the problem:
Qt Code:
  1. bool CustomLineEdit::event( QEvent* event )
  2. {
  3. switch( event->type() )
  4. {
  5. case QEvent::ShortcutOverride:
  6. event->accept();
  7. return true;
  8. break;
  9.  
  10. default: // Important to avoid compiler warnings about unhandled QEvent types.
  11. return QLineEdit::event( event );
  12. break;
  13. }
  14. }
To copy to clipboard, switch view to plain text mode 
Now the widget accepts "x" as text input when it has keyboard focus, and when it doesn't the QAction is invoked instead.
More information here: http://wiki.qt.io/ShortcutOverride