Qt 4.8
Classes | Public Types | Public Functions | Properties | List of all members
QInputMethodEvent Class Reference

The QInputMethodEvent class provides parameters for input method events. More...

#include <qevent.h>

Inheritance diagram for QInputMethodEvent:
QEvent

Classes

class  Attribute
 The QInputMethodEvent::Attribute class stores an input method attribute. More...
 

Public Types

enum  AttributeType {
  TextFormat, Cursor, Language, Ruby,
  Selection
}
 A QTextCharFormat for the part of the preedit string specified by start and length. More...
 
- Public Types inherited from QEvent
enum  Type {
  None = 0, Timer = 1, MouseButtonPress = 2, MouseButtonRelease = 3,
  MouseButtonDblClick = 4, MouseMove = 5, KeyPress = 6, KeyRelease = 7,
  FocusIn = 8, FocusOut = 9, Enter = 10, Leave = 11,
  Paint = 12, Move = 13, Resize = 14, Create = 15,
  Destroy = 16, Show = 17, Hide = 18, Close = 19,
  Quit = 20, ParentChange = 21, ParentAboutToChange = 131, ThreadChange = 22,
  WindowActivate = 24, WindowDeactivate = 25, ShowToParent = 26, HideToParent = 27,
  Wheel = 31, WindowTitleChange = 33, WindowIconChange = 34, ApplicationWindowIconChange = 35,
  ApplicationFontChange = 36, ApplicationLayoutDirectionChange = 37, ApplicationPaletteChange = 38, PaletteChange = 39,
  Clipboard = 40, Speech = 42, MetaCall = 43, SockAct = 50,
  WinEventAct = 132, DeferredDelete = 52, DragEnter = 60, DragMove = 61,
  DragLeave = 62, Drop = 63, DragResponse = 64, ChildAdded = 68,
  ChildPolished = 69, ChildRemoved = 71, ShowWindowRequest = 73, PolishRequest = 74,
  Polish = 75, LayoutRequest = 76, UpdateRequest = 77, UpdateLater = 78,
  EmbeddingControl = 79, ActivateControl = 80, DeactivateControl = 81, ContextMenu = 82,
  InputMethod = 83, AccessibilityPrepare = 86, TabletMove = 87, LocaleChange = 88,
  LanguageChange = 89, LayoutDirectionChange = 90, Style = 91, TabletPress = 92,
  TabletRelease = 93, OkRequest = 94, HelpRequest = 95, IconDrag = 96,
  FontChange = 97, EnabledChange = 98, ActivationChange = 99, StyleChange = 100,
  IconTextChange = 101, ModifiedChange = 102, MouseTrackingChange = 109, WindowBlocked = 103,
  WindowUnblocked = 104, WindowStateChange = 105, ToolTip = 110, WhatsThis = 111,
  StatusTip = 112, ActionChanged = 113, ActionAdded = 114, ActionRemoved = 115,
  FileOpen = 116, Shortcut = 117, ShortcutOverride = 51, WhatsThisClicked = 118,
  ToolBarChange = 120, ApplicationActivate = 121, ApplicationActivated = ApplicationActivate, ApplicationDeactivate = 122,
  ApplicationDeactivated = ApplicationDeactivate, QueryWhatsThis = 123, EnterWhatsThisMode = 124, LeaveWhatsThisMode = 125,
  ZOrderChange = 126, HoverEnter = 127, HoverLeave = 128, HoverMove = 129,
  AccessibilityHelp = 119, AccessibilityDescription = 130, AcceptDropsChange = 152, MenubarUpdated = 153,
  ZeroTimerEvent = 154, GraphicsSceneMouseMove = 155, GraphicsSceneMousePress = 156, GraphicsSceneMouseRelease = 157,
  GraphicsSceneMouseDoubleClick = 158, GraphicsSceneContextMenu = 159, GraphicsSceneHoverEnter = 160, GraphicsSceneHoverMove = 161,
  GraphicsSceneHoverLeave = 162, GraphicsSceneHelp = 163, GraphicsSceneDragEnter = 164, GraphicsSceneDragMove = 165,
  GraphicsSceneDragLeave = 166, GraphicsSceneDrop = 167, GraphicsSceneWheel = 168, KeyboardLayoutChange = 169,
  DynamicPropertyChange = 170, TabletEnterProximity = 171, TabletLeaveProximity = 172, NonClientAreaMouseMove = 173,
  NonClientAreaMouseButtonPress = 174, NonClientAreaMouseButtonRelease = 175, NonClientAreaMouseButtonDblClick = 176, MacSizeChange = 177,
  ContentsRectChange = 178, MacGLWindowChange = 179, FutureCallOut = 180, GraphicsSceneResize = 181,
  GraphicsSceneMove = 182, CursorChange = 183, ToolTipChange = 184, NetworkReplyUpdated = 185,
  GrabMouse = 186, UngrabMouse = 187, GrabKeyboard = 188, UngrabKeyboard = 189,
  MacGLClearDrawable = 191, StateMachineSignal = 192, StateMachineWrapped = 193, TouchBegin = 194,
  TouchUpdate = 195, TouchEnd = 196, NativeGesture = 197, RequestSoftwareInputPanel = 199,
  CloseSoftwareInputPanel = 200, UpdateSoftKeys = 201, WinIdChange = 203, Gesture = 198,
  GestureOverride = 202, PlatformPanel = 212, User = 1000, MaxUser = 65535
}
 This enum type defines the valid event types in Qt. More...
 

Public Functions

const QList< Attribute > & attributes () const
 Returns the list of attributes passed to the QInputMethodEvent constructor. More...
 
const QStringcommitString () const
 Returns the text that should get added to (or replace parts of) the text of the editor widget. More...
 
const QStringpreeditString () const
 Returns the preedit text, i. More...
 
 QInputMethodEvent ()
 Constructs an event of type QEvent::InputMethod. More...
 
 QInputMethodEvent (const QString &preeditText, const QList< Attribute > &attributes)
 Construcs an event of type QEvent::InputMethod. More...
 
 QInputMethodEvent (const QInputMethodEvent &other)
 Constructs a copy of other. More...
 
int replacementLength () const
 Returns the number of characters to be replaced in the preedit string. More...
 
int replacementStart () const
 Returns the position at which characters are to be replaced relative from the start of the preedit string. More...
 
void setCommitString (const QString &commitString, int replaceFrom=0, int replaceLength=0)
 Sets the commit string to commitString. More...
 
- Public Functions inherited from QEvent
void accept ()
 Sets the accept flag of the event object, the equivalent of calling setAccepted(true). More...
 
void ignore ()
 Clears the accept flag parameter of the event object, the equivalent of calling setAccepted(false). More...
 
bool isAccepted () const
 
 QEvent (Type type)
 Contructs an event object of type type. More...
 
void setAccepted (bool accepted)
 
bool spontaneous () const
 Returns true if the event originated outside the application (a system event); otherwise returns false. More...
 
Type type () const
 Returns the event type. More...
 
virtual ~QEvent ()
 Destroys the event. More...
 

Properties

QList< Attributeattrs
 
QString commit
 
QString preedit
 
int replace_from
 
int replace_length
 

Additional Inherited Members

- Static Public Functions inherited from QEvent
static int registerEventType (int hint=-1)
 Registers and returns a custom event type. More...
 
- Protected Variables inherited from QEvent
QEventPrivate * d
 
ushort t
 

Detailed Description

The QInputMethodEvent class provides parameters for input method events.

Input method events are sent to widgets when an input method is used to enter text into a widget. Input methods are widely used to enter text for languages with non-Latin alphabets.

Note that when creating custom text editing widgets, the Qt::WA_InputMethodEnabled window attribute must be set explicitly (using the QWidget::setAttribute() function) in order to receive input method events.

The events are of interest to authors of keyboard entry widgets who want to be able to correctly handle languages with complex character input. Text input in such languages is usually a three step process:

  1. Starting to Compose

    When the user presses the first key on a keyboard, an input context is created. This input context will contain a string of the typed characters.

  2. Composing

    With every new key pressed, the input method will try to create a matching string for the text typed so far called preedit string. While the input context is active, the user can only move the cursor inside the string belonging to this input context.

  3. Completing

    At some point, the user will activate a user interface component (perhaps using a particular key) where they can choose from a number of strings matching the text they have typed so far. The user can either confirm their choice cancel the input; in either case the input context will be closed.

QInputMethodEvent models these three stages, and transfers the information needed to correctly render the intermediate result. A QInputMethodEvent has two main parameters: preeditString() and commitString(). The preeditString() parameter gives the currently active preedit string. The commitString() parameter gives a text that should get added to (or replace parts of) the text of the editor widget. It usually is a result of the input operations and has to be inserted to the widgets text directly before the preedit string.

If the commitString() should replace parts of the of the text in the editor, replacementLength() will contain the number of characters to be replaced. replacementStart() contains the position at which characters are to be replaced relative from the start of the preedit string.

A number of attributes control the visual appearance of the preedit string (the visual appearance of text outside the preedit string is controlled by the widget only). The AttributeType enum describes the different attributes that can be set.

A class implementing QWidget::inputMethodEvent() or QGraphicsItem::inputMethodEvent() should at least understand and honor the TextFormat and Cursor attributes.

Since input methods need to be able to query certain properties from the widget or graphics item, subclasses must also implement QWidget::inputMethodQuery() and QGraphicsItem::inputMethodQuery(), respectively.

When receiving an input method event, the text widget has to performs the following steps:

  1. If the widget has selected text, the selected text should get removed.

  2. Remove the text starting at replacementStart() with length replacementLength() and replace it by the commitString(). If replacementLength() is 0, replacementStart() gives the insertion position for the commitString().

    When doing replacement the area of the preedit string is ignored, thus a replacement starting at -1 with a length of 2 will remove the last character before the preedit string and the first character afterwards, and insert the commit string directly before the preedit string.

    If the widget implements undo/redo, this operation gets added to the undo stack.

  3. If there is no current preedit string, insert the preeditString() at the current cursor position; otherwise replace the previous preeditString with the one received from this event.

    If the widget implements undo/redo, the preeditString() should not influence the undo/redo stack in any way.

    The widget should examine the list of attributes to apply to the preedit string. It has to understand at least the TextFormat and Cursor attributes and render them as specified.

See also
QInputContext

Definition at line 431 of file qevent.h.

Enumerations

◆ AttributeType

A QTextCharFormat for the part of the preedit string specified by start and length.

  • TextFormat value contains a QVariant of type QTextFormat specifying rendering of this part of the preedit string. There should be at most one format for every part of the preedit string. If several are specified for any character in the string the behaviour is undefined. A conforming implementation has to at least honor the backgroundColor, textColor and fontUnderline properties of the format.
  • Cursor If set, a cursor should be shown inside the preedit string at position start. The length variable determines whether the cursor is visible or not. If the length is 0 the cursor is invisible. If value is a QVariant of type QColor this color will be used for rendering the cursor, otherwise the color of the surrounding text will be used. There should be at most one Cursor attribute per event. If several are specified the behaviour is undefined.
  • Language The variant contains a QLocale object specifying the language of a certain part of the preedit string. There should be at most one language set for every part of the preedit string. If several are specified for any character in the string the behavior is undefined.
  • Ruby The ruby text for a part of the preedit string. There should be at most one ruby text set for every part of the preedit string. If several are specified for any character in the string the behaviour is undefined.
  • Selection If set, the edit cursor should be moved to the specified position in the editor text contents. In contrast with Cursor, this attribute does not work on the preedit text, but on the surrounding text. The cursor will be moved after the commit string has been committed, and the preedit string will be located at the new edit position. The start position specifies the new position and the length variable can be used to set a selection starting from that point. The value is unused.
See also
Attribute
Enumerator
TextFormat 
Cursor 
Language 
Ruby 
Selection 

Definition at line 434 of file qevent.h.

Constructors and Destructors

◆ QInputMethodEvent() [1/3]

QInputMethodEvent::QInputMethodEvent ( )

Constructs an event of type QEvent::InputMethod.

The attributes(), preeditString(), commitString(), replacementStart(), and replacementLength() are initialized to default values.

See also
setCommitString()

Definition at line 1996 of file qevent.cpp.

1998 {
1999 }
int replace_length
Definition: qevent.h:468
QEvent(Type type)
Contructs an event object of type type.
Definition: qcoreevent.cpp:289

◆ QInputMethodEvent() [2/3]

QInputMethodEvent::QInputMethodEvent ( const QString preeditText,
const QList< Attribute > &  attributes 
)

Construcs an event of type QEvent::InputMethod.

The preedit text is set to preeditText, the attributes to attributes.

The commitString(), replacementStart(), and replacementLength() values can be set using setCommitString().

See also
preeditString(), attributes()

Definition at line 2011 of file qevent.cpp.

2012  : QEvent(QEvent::InputMethod), preedit(preeditText), attrs(attributes),
2014 {
2015 }
int replace_length
Definition: qevent.h:468
QList< Attribute > attrs
Definition: qevent.h:465
QString preedit
Definition: qevent.h:464
QEvent(Type type)
Contructs an event object of type type.
Definition: qcoreevent.cpp:289

◆ QInputMethodEvent() [3/3]

QInputMethodEvent::QInputMethodEvent ( const QInputMethodEvent other)

Constructs a copy of other.

Definition at line 2020 of file qevent.cpp.

2021  : QEvent(QEvent::InputMethod), preedit(other.preedit), attrs(other.attrs),
2023 {
2024 }
int replace_length
Definition: qevent.h:468
QList< Attribute > attrs
Definition: qevent.h:465
QString preedit
Definition: qevent.h:464
QEvent(Type type)
Contructs an event object of type type.
Definition: qcoreevent.cpp:289
QString commit
Definition: qevent.h:466

Functions

◆ attributes()

const QList< Attribute > & QInputMethodEvent::attributes ( ) const
inline

Returns the list of attributes passed to the QInputMethodEvent constructor.

The attributes control the visual appearance of the preedit string (the visual appearance of text outside the preedit string is controlled by the widget only).

See also
preeditString(), Attribute

Definition at line 454 of file qevent.h.

Referenced by QTextControlPrivate::inputMethodEvent(), and QWSServer::sendIMEvent().

454 { return attrs; }
QList< Attribute > attrs
Definition: qevent.h:465

◆ commitString()

const QString & QInputMethodEvent::commitString ( ) const
inline

Returns the text that should get added to (or replace parts of) the text of the editor widget.

It usually is a result of the input operations and has to be inserted to the widgets text directly before the preedit string.

See also
setCommitString(), preeditString(), replacementStart(), replacementLength()

Definition at line 457 of file qevent.h.

Referenced by QTextControlPrivate::inputMethodEvent(), QLineEdit::inputMethodEvent(), QComboBox::inputMethodEvent(), QAbstractItemView::inputMethodEvent(), QLineControl::processInputMethodEvent(), QWSServer::sendIMEvent(), and setCommitString().

457 { return commit; }
QString commit
Definition: qevent.h:466

◆ preeditString()

const QString & QInputMethodEvent::preeditString ( ) const
inline

Returns the preedit text, i.

e. the text before the user started editing it.

See also
commitString(), attributes()

Definition at line 455 of file qevent.h.

Referenced by QTextControlPrivate::inputMethodEvent(), QLineEdit::inputMethodEvent(), QLineControl::processInputMethodEvent(), and QWSServer::sendIMEvent().

455 { return preedit; }
QString preedit
Definition: qevent.h:464

◆ replacementLength()

int QInputMethodEvent::replacementLength ( ) const
inline

Returns the number of characters to be replaced in the preedit string.

See also
replacementStart(), setCommitString()

Definition at line 459 of file qevent.h.

Referenced by QTextControlPrivate::inputMethodEvent(), QLineControl::processInputMethodEvent(), and QWSServer::sendIMEvent().

459 { return replace_length; }
int replace_length
Definition: qevent.h:468

◆ replacementStart()

int QInputMethodEvent::replacementStart ( ) const
inline

Returns the position at which characters are to be replaced relative from the start of the preedit string.

See also
replacementLength(), setCommitString()

Definition at line 458 of file qevent.h.

Referenced by QTextControlPrivate::inputMethodEvent(), QLineControl::processInputMethodEvent(), and QWSServer::sendIMEvent().

458 { return replace_from; }

◆ setCommitString()

void QInputMethodEvent::setCommitString ( const QString commitString,
int  replaceFrom = 0,
int  replaceLength = 0 
)

Sets the commit string to commitString.

The commit string is the text that should get added to (or replace parts of) the text of the editor widget. It usually is a result of the input operations and has to be inserted to the widgets text directly before the preedit string.

If the commit string should replace parts of the of the text in the editor, replaceLength specifies the number of characters to be replaced. replaceFrom specifies the position at which characters are to be replaced relative from the start of the preedit string.

See also
commitString(), replacementStart(), replacementLength()

Definition at line 2042 of file qevent.cpp.

Referenced by QMacInputContext::globalEventProcessor(), QMacInputContext::reset(), QWinInputContext::reset(), QXIMInputContext::reset(), QWSInputMethod::sendCommitString(), QWSInputContext::translateIMEvent(), and QXIMInputContext::x11FilterEvent().

2043 {
2044  commit = commitString;
2045  replace_from = replaceFrom;
2046  replace_length = replaceLength;
2047 }
int replace_length
Definition: qevent.h:468
const QString & commitString() const
Returns the text that should get added to (or replace parts of) the text of the editor widget...
Definition: qevent.h:457
QString commit
Definition: qevent.h:466

Properties

◆ attrs

QList<Attribute> QInputMethodEvent::attrs
private

Definition at line 465 of file qevent.h.

◆ commit

QString QInputMethodEvent::commit
private

Definition at line 466 of file qevent.h.

Referenced by setCommitString().

◆ preedit

QString QInputMethodEvent::preedit
private

Definition at line 464 of file qevent.h.

◆ replace_from

int QInputMethodEvent::replace_from
private

Definition at line 467 of file qevent.h.

Referenced by setCommitString().

◆ replace_length

int QInputMethodEvent::replace_length
private

Definition at line 468 of file qevent.h.

Referenced by setCommitString().


The documentation for this class was generated from the following files: