📄 qevent.cpp
字号:
When this event occurs it is customary to show a QMenu with a context menu, if this is relevant to the context. Context menu events contain a special accept flag that indicates whether the receiver accepted the event. If the event handler does not accept the event then, if possible, whatever triggered the event will be handled as a regular input event.*//*! Constructs a context menu event object with the accept parameter flag set to false. The \a reason parameter must be QContextMenuEvent::Mouse or QContextMenuEvent::Keyboard. The \a pos parameter specifies the mouse position relative to the receiving widget. \a globalPos is the mouse position in absolute coordinates.*/QContextMenuEvent::QContextMenuEvent(Reason reason, const QPoint &pos, const QPoint &globalPos) : QInputEvent(ContextMenu), p(pos), gp(globalPos), reas(reason){}#ifdef QT3_SUPPORT/*! Constructs a context menu event with the given \a reason for the position specified by \a pos in widget coordinates and \a globalPos in global screen coordinates. \a dummy is ignored.*/QContextMenuEvent::QContextMenuEvent(Reason reason, const QPoint &pos, const QPoint &globalPos, int /* dummy */) : QInputEvent(ContextMenu), p(pos), gp(globalPos), reas(reason){}#endif/*! \internal */QContextMenuEvent::~QContextMenuEvent(){}/*! Constructs a context menu event object with the accept parameter flag set to false. The \a reason parameter must be QContextMenuEvent::Mouse or QContextMenuEvent::Keyboard. The \a pos parameter specifies the mouse position relative to the receiving widget. The globalPos() is initialized to QCursor::pos(), which may not be appropriate. Use the other constructor to specify the global position explicitly.*/QContextMenuEvent::QContextMenuEvent(Reason reason, const QPoint &pos) : QInputEvent(ContextMenu), p(pos), reas(reason){ gp = QCursor::pos();}#ifdef QT3_SUPPORT/*! Constructs a context menu event with the given \a reason for the position specified by \a pos in widget coordinates. \a dummy is ignored.*/QContextMenuEvent::QContextMenuEvent(Reason reason, const QPoint &pos, int /* dummy */) : QInputEvent(ContextMenu), p(pos), reas(reason){ gp = QCursor::pos();}Qt::ButtonState QContextMenuEvent::state() const{ return Qt::ButtonState(int(QApplication::keyboardModifiers())|QApplication::mouseButtons());}#endif/*! \fn const QPoint &QContextMenuEvent::pos() const Returns the position of the mouse pointer relative to the widget that received the event. \sa x(), y(), globalPos()*//*! \fn int QContextMenuEvent::x() const Returns the x position of the mouse pointer, relative to the widget that received the event. \sa y(), pos()*//*! \fn int QContextMenuEvent::y() const Returns the y position of the mouse pointer, relative to the widget that received the event. \sa x(), pos()*//*! \fn const QPoint &QContextMenuEvent::globalPos() const Returns the global position of the mouse pointer at the time of the event. \sa x(), y(), pos()*//*! \fn int QContextMenuEvent::globalX() const Returns the global x position of the mouse pointer at the time of the event. \sa globalY(), globalPos()*//*! \fn int QContextMenuEvent::globalY() const Returns the global y position of the mouse pointer at the time of the event. \sa globalX(), globalPos()*//*! \fn Qt::ButtonState QContextMenuEvent::state() const Returns the button state (a combination of mouse buttons and keyboard modifiers) immediately before the event was generated. The returned value is a selection of the following values, combined with the OR operator: Qt::LeftButton, Qt::RightButton, Qt::MidButton, Qt::ShiftButton, Qt::ControlButton, and Qt::AltButton.*//*! \enum QContextMenuEvent::Reason This enum describes the reason why the event was sent. \value Mouse The mouse caused the event to be sent. Normally this means the right mouse button was clicked, but this is platform dependent. \value Keyboard The keyboard caused this event to be sent. On Windows, this means the menu button was pressed. \value Other The event was sent by some other means (i.e. not by the mouse or keyboard).*//*! \fn QContextMenuEvent::Reason QContextMenuEvent::reason() const Returns the reason for this context event.*//*! \class QInputMethodEvent \brief The QInputMethodEvent class provides parameters for input method events. \ingroup 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: \list 1 \o \bold{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. \o \bold{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. \o \bold{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. \endlist 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 \l TextFormat and \l 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: \list 1 \o If the widget has selected text, the selected text should get removed. \o 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. \o 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. \endlist \sa QInputContext*//*! \enum QInputMethodEvent::AttributeType \value TextFormat A QTextCharFormat for the part of the preedit string specified by start and length. 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. \value 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. \value 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 behaviour is undefined. \value 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. \sa Attribute*//*! \class QInputMethodEvent::Attribute \brief The QInputMethodEvent::Attribute class stores an input method attribute.*//*! \fn QInputMethodEvent::Attribute::Attribute(AttributeType type, int start, int length, QVariant value) Constructs an input method attribute. \a type specifies the type of attribute, \a start and \a length the position of the attribute, and \a value the value of the attribute.*//*! Constructs an event of type QEvent::InputMethod. The attributes(), preeditString(), commitString(), replacementStart(), and replacementLength() are initialized to default values. \sa setCommitString()*/QInputMethodEvent::QInputMethodEvent() : QEvent(QEvent::InputMethod), replace_from(0), replace_length(0){}/*! Construcs an event of type QEvent::InputMethod. The preedit text is set to \a preeditText, the attributes to \a attributes. The commitString(), replacementStart(), and replacementLength() values can be set using setCommitString(). \sa preeditString(), attributes()*/QInputMethodEvent::QInputMethodEvent(const QString &preeditText, const QList<Attribute> &attributes) : QEvent(QEvent::InputMethod), preedit(preeditText), attrs(attributes), replace_from(0), replace_length(0){}/*! Constructs a copy of \a other.*/QInputMethodEvent::QInputMethodEvent(const QInputMethodEvent &other) : QEvent(QEvent::InputMethod), preedit(other.preedit), attrs(other.attrs), commit(other.commit), replace_from(other.replace_from), replace_length(other.replace_length){}/*! Sets the commit string to \a 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, \a replaceLength specifies the number of characters to be replaced. \a replaceFrom specifies the position at which characters are to be replaced relative from the start of the preedit string. \sa commitString(), replacementStart(), replacementLength()*/void QInputMethodEvent::setCommitString(const QString &commitString, int replaceFrom, int replaceLength){ commit = commitString; replace_from = replaceFrom; replace_length = replaceLength;}/*! \fn const QList<Attribute> &QInputMethodEvent::attributes() const 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). \sa preeditString(), Attribute*//*! \fn const QString &QInputMethodEvent::preeditString() const Returns the preedit text, i.e. the text before the user started editing it. \sa commitString(), attributes()*//*! \fn const QString &QInputMethodEvent::commitString() const 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. \sa setCommitString(), preeditString(), replacementStart(), replacementLength()*//*! \fn int QInputMethodEvent::replacementStart() const Returns the position at which characters are to be replaced relative from the start of the preedit string. \sa replacementLength(), setCommitString()*//*!
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -