Qt 4.8
|
The QInputContext class abstracts the input method dependent data and composing state. More...
#include <qinputcontext.h>
Public Types | |
enum | StandardFormat { PreeditFormat, SelectionFormat } |
Public Functions | |
virtual QList< QAction * > | actions () |
This is a preliminary interface for Qt 4. More... | |
virtual bool | filterEvent (const QEvent *event) |
This function can be reimplemented in a subclass to filter input events. More... | |
QWidget * | focusWidget () const |
Returns the widget that has an input focus for this input context. More... | |
virtual QFont | font () const |
Returns the font of the current input widget. More... | |
virtual QString | identifierName ()=0 |
This function must be implemented in any subclasses to return the identifier name of the input method. More... | |
virtual bool | isComposing () const =0 |
This function indicates whether InputMethodStart event had been sent to the current focus widget. More... | |
virtual QString | language ()=0 |
This function must be implemented in any subclasses to return a language code (e. More... | |
virtual void | mouseHandler (int x, QMouseEvent *event) |
This function can be reimplemented in a subclass to handle mouse press, release, double-click, and move events within the preedit text. More... | |
QInputContext (QObject *parent=0) | |
Constructs an input context with the given parent. More... | |
virtual void | reset ()=0 |
This function can be reimplemented in a subclass to reset the state of the input method. More... | |
void | sendEvent (const QInputMethodEvent &event) |
Sends an input method event specified by event to the current focus widget. More... | |
virtual void | setFocusWidget (QWidget *w) |
Sets the widget that has an input focus for this input context. More... | |
QTextFormat | standardFormat (StandardFormat s) const |
Returns a QTextFormat object that specifies the format for component s. More... | |
virtual void | update () |
This virtual function is called when a state in the focus widget has changed. More... | |
virtual void | widgetDestroyed (QWidget *w) |
This virtual function is called when the specified widget is destroyed. More... | |
virtual bool | x11FilterEvent (QWidget *keywidget, XEvent *event) |
This function may be overridden only if input method is depending on X11 and you need raw XEvent. More... | |
virtual | ~QInputContext () |
Destroys the input context. More... | |
Public Functions inherited from QObject | |
bool | blockSignals (bool b) |
If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). More... | |
const QObjectList & | children () const |
Returns a list of child objects. More... | |
bool | connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const |
bool | disconnect (const char *signal=0, const QObject *receiver=0, const char *member=0) |
bool | disconnect (const QObject *receiver, const char *member=0) |
void | dumpObjectInfo () |
Dumps information about signal connections, etc. More... | |
void | dumpObjectTree () |
Dumps a tree of children to the debug output. More... | |
QList< QByteArray > | dynamicPropertyNames () const |
Returns the names of all properties that were dynamically added to the object using setProperty(). More... | |
virtual bool | event (QEvent *) |
This virtual function receives events to an object and should return true if the event e was recognized and processed. More... | |
virtual bool | eventFilter (QObject *, QEvent *) |
Filters events if this object has been installed as an event filter for the watched object. More... | |
template<typename T > | |
T | findChild (const QString &aName=QString()) const |
Returns the child of this object that can be cast into type T and that is called name, or 0 if there is no such object. More... | |
template<typename T > | |
QList< T > | findChildren (const QString &aName=QString()) const |
Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. More... | |
template<typename T > | |
QList< T > | findChildren (const QRegExp &re) const |
bool | inherits (const char *classname) const |
Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false. More... | |
void | installEventFilter (QObject *) |
Installs an event filter filterObj on this object. More... | |
bool | isWidgetType () const |
Returns true if the object is a widget; otherwise returns false. More... | |
void | killTimer (int id) |
Kills the timer with timer identifier, id. More... | |
virtual const QMetaObject * | metaObject () const |
Returns a pointer to the meta-object of this object. More... | |
void | moveToThread (QThread *thread) |
Changes the thread affinity for this object and its children. More... | |
QString | objectName () const |
QObject * | parent () const |
Returns a pointer to the parent object. More... | |
QVariant | property (const char *name) const |
Returns the value of the object's name property. More... | |
Q_INVOKABLE | QObject (QObject *parent=0) |
Constructs an object with parent object parent. More... | |
void | removeEventFilter (QObject *) |
Removes an event filter object obj from this object. More... | |
void | setObjectName (const QString &name) |
void | setParent (QObject *) |
Makes the object a child of parent. More... | |
bool | setProperty (const char *name, const QVariant &value) |
Sets the value of the object's name property to value. More... | |
void | setUserData (uint id, QObjectUserData *data) |
bool | signalsBlocked () const |
Returns true if signals are blocked; otherwise returns false. More... | |
int | startTimer (int interval) |
Starts a timer and returns a timer identifier, or returns zero if it could not start a timer. More... | |
QThread * | thread () const |
Returns the thread in which the object lives. More... | |
QObjectUserData * | userData (uint id) const |
virtual | ~QObject () |
Destroys the object, deleting all its child objects. More... | |
Private Functions | |
QInputContext & | operator= (const QInputContext &) |
QInputContext (const QInputContext &) | |
Friends | |
class | QApplication |
class | QInputContextFactory |
class | QWidget |
class | QWidgetPrivate |
Additional Inherited Members | |
Public Slots inherited from QObject | |
void | deleteLater () |
Schedules this object for deletion. More... | |
Signals inherited from QObject | |
void | destroyed (QObject *=0) |
This signal is emitted immediately before the object obj is destroyed, and can not be blocked. More... | |
Static Public Functions inherited from QObject | |
static bool | connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection) |
Creates a connection of the given type from the signal in the sender object to the method in the receiver object. More... | |
static bool | connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection) |
static bool | disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member) |
Disconnects signal in object sender from method in object receiver. More... | |
static bool | disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member) |
static uint | registerUserData () |
static QString | tr (const char *sourceText, const char *comment=0, int n=-1) |
static QString | trUtf8 (const char *sourceText, const char *comment=0, int n=-1) |
Static Public Variables inherited from QObject | |
static const QMetaObject | staticMetaObject |
This variable stores the meta-object for the class. More... | |
Protected Functions inherited from QObject | |
virtual void | childEvent (QChildEvent *) |
This event handler can be reimplemented in a subclass to receive child events. More... | |
virtual void | connectNotify (const char *signal) |
This virtual function is called when something has been connected to signal in this object. More... | |
virtual void | customEvent (QEvent *) |
This event handler can be reimplemented in a subclass to receive custom events. More... | |
virtual void | disconnectNotify (const char *signal) |
This virtual function is called when something has been disconnected from signal in this object. More... | |
QObject (QObjectPrivate &dd, QObject *parent=0) | |
int | receivers (const char *signal) const |
Returns the number of receivers connected to the signal. More... | |
QObject * | sender () const |
Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns 0. More... | |
int | senderSignalIndex () const |
virtual void | timerEvent (QTimerEvent *) |
This event handler can be reimplemented in a subclass to receive timer events for the object. More... | |
Protected Variables inherited from QObject | |
QScopedPointer< QObjectData > | d_ptr |
Static Protected Variables inherited from QObject | |
static const QMetaObject | staticQtMetaObject |
Related Functions inherited from QObject | |
T | qFindChildqFindChildren (const QObject *obj, const QString &name)() |
QList< T > | qFindChildrenqFindChildren (const QObject *obj, const QString &name)() |
QList< T > | qFindChildrenqFindChildren (const QObject *obj, const QRegExp ®Exp)() |
T * | qobject_cast (QObject *object) |
QObjectList | |
void * | qt_find_obj_child (QObject *parent, const char *type, const QString &name) |
Returns a pointer to the object named name that inherits type and with a given parent. More... | |
The QInputContext class abstracts the input method dependent data and composing state.
An input method is responsible for inputting complex text that cannot be inputted via simple keymap. It converts a sequence of input events (typically key events) into a text string through the input method specific converting process. The class of the processes are widely ranging from simple finite state machine to complex text translator that pools a whole paragraph of a text with text editing capability to perform grammar and semantic analysis.
To abstract such different input method specific intermediate information, Qt offers the QInputContext as base class. The concept is well known as 'input context' in the input method domain. An input context is created for a text widget in response to a demand. It is ensured that an input context is prepared for an input method before input to a text widget.
Multiple input contexts that belong to a single input method may concurrently coexist. Suppose multi-window text editor. Each text widget of window A and B holds different QInputContext instance which contains different state information such as partially composed text.
Context | Functions |
Receiving information | |
Sending back composed text | |
State change notification | |
Context information |
Copyright (C) 2003-2004 immodule for Qt Project. All rights reserved.
This file is written to contribute to Nokia Corporation and/or its subsidiary(-ies) under their own license. You may use this file under your Qt license. Following description is copied from their original file headers. Contact immod if any conditions of this licensing are not clear to you. ule- qt@fr eede sktop .org
Definition at line 83 of file qinputcontext.h.
Enumerator | |
---|---|
PreeditFormat | |
SelectionFormat |
Definition at line 118 of file qinputcontext.h.
|
explicit |
Constructs an input context with the given parent.
Definition at line 144 of file qinputcontext.cpp.
|
virtual |
|
private |
This is a preliminary interface for Qt 4.
Reimplemented in QMultiInputContext, and QBBInputContext.
Definition at line 417 of file qinputcontext.cpp.
Referenced by QBBInputContext::actions(), QMultiInputContext::actions(), QTextControl::createStandardContextMenu(), and QLineEdit::createStandardContextMenu().
|
virtual |
This function can be reimplemented in a subclass to filter input events.
Return true if the event has been consumed. Otherwise, the unfiltered event will be forwarded to widgets as ordinary way. Although the input events have accept() and ignore() methods, leave it untouched.
event is currently restricted to events of these types:
But some input method related events such as QWheelEvent or QTabletEvent may be added in future.
The filtering opportunity is always given to the input context as soon as possible. It has to be taken place before any other key event consumers such as eventfilters and accelerators because some input methods require quite various key combination and sequences. It often conflicts with accelerators and so on, so we must give the input context the filtering opportunity first to ensure all input methods work properly regardless of application design.
Ordinary input methods require discrete key events to work properly, so Qt's key compression is always disabled for any input contexts.
Reimplemented in QCoeFepInputContext, QMultiInputContext, QBBInputContext, and QBBInputContext.
Definition at line 248 of file qinputcontext.cpp.
Referenced by QMultiInputContext::filterEvent(), QApplication::notify(), and QApplication::x11ProcessEvent().
QWidget * QInputContext::focusWidget | ( | ) | const |
Returns the widget that has an input focus for this input context.
The return value may differ from holderWidget() if the input context is shared between several text widgets.
Definition at line 170 of file qinputcontext.cpp.
Referenced by QMultiInputContext::changeSlave(), QXIMInputContext::create_xim(), QBBInputContext::dispatchRequestSoftwareInputPanel(), QWinInputContext::endComposition(), QMultiInputContext::focusWidget(), QMacInputContext::globalEventProcessor(), QBBInputContext::hasSelectedText(), QXIMInputContext::icData(), QXIMInputContext::isComposing(), QWinInputContext::mouseHandler(), QXIMInputContext::mouseHandler(), QBBInputContext::onGetCursorPosition(), QBBInputContext::onGetSelectedText(), QBBInputContext::onGetTextAfterCursor(), QBBInputContext::onGetTextBeforeCursor(), QBBInputContext::onSetComposingRegion(), QBBInputContext::onSetComposingText(), QWinInputContext::reconvertString(), QMacInputContext::reset(), QWinInputContext::reset(), QXIMInputContext::reset(), sendEvent(), QWidget::setAttribute(), QMacInputContext::setFocusWidget(), QWSInputContext::setFocusWidget(), QWinInputContext::setFocusWidget(), QXIMInputContext::setFocusWidget(), standardFormat(), QWinInputContext::startComposition(), QWSInputContext::update(), QWinInputContext::update(), QXIMInputContext::update(), and QXIMInputContext::x11FilterEvent().
|
virtual |
Returns the font of the current input widget.
Reimplemented in QMultiInputContext, and QBBInputContext.
Definition at line 315 of file qinputcontext.cpp.
Referenced by QXIMInputContext::createICData(), QBBInputContext::font(), and QMultiInputContext::font().
|
pure virtual |
This function must be implemented in any subclasses to return the identifier name of the input method.
Return value is the name to identify and specify input methods for the input method switching mechanism and so on. The name has to be consistent with QInputContextPlugin::keys(). The name has to consist of ASCII characters only.
There are two different names with different responsibility in the input method domain. This function returns one of them. Another name is called 'display name' that stands for the name for endusers appeared in a menu and so on.
Implemented in QDummyInputContext, QXIMInputContext, QCoeFepInputContext, QWinInputContext, QMultiInputContext, QWSInputContext, QMacInputContext, QBBInputContext, and QBBInputContext.
Referenced by QMultiInputContext::identifierName().
|
pure virtual |
This function indicates whether InputMethodStart event had been sent to the current focus widget.
It is ensured that an input context can send InputMethodCompose or InputMethodEnd event safely if this function returned true.
The state is automatically being tracked through sendEvent().
Implemented in QDummyInputContext, QCoeFepInputContext, QXIMInputContext, QWinInputContext, QMultiInputContext, QWSInputContext, QMacInputContext, QBBInputContext, and QBBInputContext.
Referenced by QMacInputContext::identifierName(), QMultiInputContext::isComposing(), and QKeyMapperPrivate::translateKeyEvent().
|
pure virtual |
This function must be implemented in any subclasses to return a language code (e.
g. "zh_CN", "zh_TW", "zh_HK", "ja", "ko", ...) of the input context. If the input context can handle multiple languages, return the currently used one. The name has to be consistent with QInputContextPlugin::language().
This information will be used by language tagging feature in QInputMethodEvent. It is required to distinguish unified han characters correctly. It enables proper font and character code handling. Suppose CJK-awared multilingual web browser (that automatically modifies fonts in CJK-mixed text) and XML editor (that automatically inserts lang attr).
Implemented in QDummyInputContext, QXIMInputContext, QCoeFepInputContext, QWinInputContext, QMultiInputContext, QWSInputContext, QMacInputContext, QBBInputContext, and QBBInputContext.
Referenced by QMacInputContext::identifierName(), and QMultiInputContext::language().
|
virtual |
This function can be reimplemented in a subclass to handle mouse press, release, double-click, and move events within the preedit text.
You can use the function to implement mouse-oriented user interface such as text selection or popup menu for candidate selection.
The x parameter is the offset within the string that was sent with the InputMethodCompose event. The alteration boundary of x is ensured as character boundary of preedit string accurately.
The event parameter is the event that was sent to the editor widget. The event type is QEvent::MouseButtonPress, QEvent::MouseButtonRelease, QEvent::MouseButtonDblClick or QEvent::MouseMove. The event's button and state indicate the kind of operation that was performed.
Reimplemented in QCoeFepInputContext, QXIMInputContext, QWinInputContext, QMultiInputContext, QMacInputContext, QWSInputContext, and QBBInputContext.
Definition at line 303 of file qinputcontext.cpp.
Referenced by QMacInputContext::lastFocusWidget(), QBBInputContext::mouseHandler(), QMultiInputContext::mouseHandler(), QDeclarativeTextInputPrivate::sendMouseEventToInputContext(), QLineEditPrivate::sendMouseEventToInputContext(), and QTextControlPrivate::sendMouseEventToInputContext().
|
private |
|
pure virtual |
This function can be reimplemented in a subclass to reset the state of the input method.
This function is called by several widgets to reset input state. For example, a text widget call this function before inserting a text to make widget ready to accept a text.
Default implementation is sufficient for simple input method. You can override this function to reset external input method engines in complex input method. In the case, call QInputContext::reset() to ensure proper termination of inputting.
In a reimplementation of reset(), you must not send any QInputMethodEvent containing preedit text. You can only commit string and attributes; otherwise, you risk breaking input state consistency.
Implemented in QDummyInputContext, QXIMInputContext, QCoeFepInputContext, QWinInputContext, QMultiInputContext, QWSInputContext, QMacInputContext, QBBInputContext, and QBBInputContext.
Referenced by QMultiInputContext::changeSlave(), QMacInputContext::identifierName(), mouseHandler(), QMultiInputContext::reset(), QWidget::resetInputContext(), QWidget::setAttribute(), QWidgetPrivate::setEnabled_helper(), QGraphicsScenePrivate::setFocusItemHelper(), and QApplicationPrivate::setFocusWidget().
void QInputContext::sendEvent | ( | const QInputMethodEvent & | event | ) |
Sends an input method event specified by event to the current focus widget.
Implementations of QInputContext should call this method to send the generated input method events and not QApplication::sendEvent(), as the events might have to get dispatched to a different application on some platforms.
Some complex input methods route the handling to several child contexts (e.g. to enable language switching). To account for this, QInputContext will check if the parent object is a QInputContext. If yes, it will call the parents sendEvent() implementation instead of sending the event directly.
Definition at line 268 of file qinputcontext.cpp.
Referenced by QBBInputContext::endComposition(), QBBInputContext::onCommitText(), QBBInputContext::onDeleteSurroundingText(), QBBInputContext::onFinishComposingText(), QBBInputContext::onSetComposingRegion(), QXIMInputContext::reset(), sendEvent(), QBBInputContext::setComposingText(), QXIMInputContext::x11FilterEvent(), and xic_draw_callback().
|
virtual |
Sets the widget that has an input focus for this input context.
Reimplemented in QCoeFepInputContext, QXIMInputContext, QMultiInputContext, QWinInputContext, QWSInputContext, QMacInputContext, QBBInputContext, and QBBInputContext.
Definition at line 185 of file qinputcontext.cpp.
Referenced by QMultiInputContext::changeSlave(), getNetWmState(), QBBInputContext::hasPhysicalKeyboard(), QWidget::setAttribute(), QWidgetPrivate::setEnabled_helper(), QBBInputContext::setFocusWidget(), QMacInputContext::setFocusWidget(), QWSInputContext::setFocusWidget(), QWinInputContext::setFocusWidget(), QMultiInputContext::setFocusWidget(), QXIMInputContext::setFocusWidget(), QApplicationPrivate::setFocusWidget(), and widgetDestroyed().
QTextFormat QInputContext::standardFormat | ( | StandardFormat | s | ) | const |
Returns a QTextFormat object that specifies the format for component s.
Definition at line 435 of file qinputcontext.cpp.
Referenced by QWinInputContext::composition(), QWSInputContext::translateIMEvent(), and xic_draw_callback().
|
virtual |
This virtual function is called when a state in the focus widget has changed.
QInputContext can then use QWidget::inputMethodQuery() to query the new state of the widget.
Reimplemented in QXIMInputContext, QCoeFepInputContext, QWinInputContext, QMultiInputContext, QWSInputContext, and QBBInputContext.
Definition at line 329 of file qinputcontext.cpp.
Referenced by QWidget::setInputMethodHints(), QBBInputContext::update(), QMultiInputContext::update(), and QWidget::updateMicroFocus().
|
virtual |
This virtual function is called when the specified widget is destroyed.
The widget is a widget on which this input context is installed.
Reimplemented in QCoeFepInputContext, QXIMInputContext, QMultiInputContext, QWSInputContext, and QBBInputContext.
Definition at line 338 of file qinputcontext.cpp.
Referenced by QWidgetPrivate::isBackgroundInherited(), isServerProcess(), QBBInputContext::widgetDestroyed(), QWSInputContext::widgetDestroyed(), QMultiInputContext::widgetDestroyed(), and QXIMInputContext::widgetDestroyed().
This function may be overridden only if input method is depending on X11 and you need raw XEvent.
Otherwise, this function must not.
This function is designed to filter raw key events for XIM, but other input methods may use this to implement some special features such as distinguishing Shift_L and Shift_R.
Return true if the event has been consumed. Otherwise, the unfiltered event will be translated into QEvent and forwarded to filterEvent(). Filtering at both x11FilterEvent() and filterEvent() in single input method is allowed.
keywidget is a client widget into which a text is inputted. event is inputted XEvent.
Reimplemented in QXIMInputContext, and QMultiInputContext.
Definition at line 476 of file qinputcontext.cpp.
Referenced by QMultiInputContext::x11FilterEvent(), and QApplication::x11ProcessEvent().
|
friend |
Definition at line 127 of file qinputcontext.h.
|
friend |
Definition at line 126 of file qinputcontext.h.
Definition at line 124 of file qinputcontext.h.
|
friend |
Definition at line 125 of file qinputcontext.h.