Logo Search packages:      
Sourcecode: qt4-x11 version File versions

QInputMethodEvent Class Reference

Inheritance diagram for QInputMethodEvent:

QEvent

List of all members.


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.

{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.

{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() 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, the widget must also implement QWidget::inputMethodQuery().

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.

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.

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 390 of file qevent.h.


Public Types

enum  AttributeType { TextFormat, Cursor, Language, Ruby }
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, ApplicationActivated = 121, ApplicationDeactivated = 122, 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, User = 1000, MaxUser = 65535
}

Public Member Functions

void accept ()
const QList< Attribute > & attributes () const
const QStringcommitString () const
void ignore ()
bool isAccepted () const
const QStringpreeditString () const
 QInputMethodEvent (const QInputMethodEvent &other)
 QInputMethodEvent (const QString &preeditText, const QList< Attribute > &attributes)
 QInputMethodEvent ()
int replacementLength () const
int replacementStart () const
void setAccepted (bool accepted)
void setCommitString (const QString &commitString, int replaceFrom=0, int replaceLength=0)
bool spontaneous () const
Type type () const

Protected Attributes

QEventPrivate * d
ushort t

Private Attributes

QList< Attributeattrs
QString commit
QString preedit
int replace_from
int replace_length

Classes

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

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

Generated by  Doxygen 1.6.0   Back to index