diff options
author | Lars Knoll <lars.knoll@nokia.com> | 2011-05-04 12:50:14 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@nokia.com> | 2011-05-04 12:50:14 +0200 |
commit | 401f078386a8b5a87a58e237de7be9a2f9a045ba (patch) | |
tree | 462d6e4b6b7ca0d79166f34524c1661471bc68eb /src/gui/kernel/qevent.cpp | |
parent | 004700532ab635cf8e5240c5674b2aaeeb601b95 (diff) |
split kernel/ up according to the future library split
Create a guikernel/ directory that contains the files that'll go
into libQtGui. What remains in kernel/ will go into QtWidgets.
In addition to that image/, painting/ and text will end up
int QtGui.
Diffstat (limited to 'src/gui/kernel/qevent.cpp')
-rw-r--r-- | src/gui/kernel/qevent.cpp | 4619 |
1 files changed, 0 insertions, 4619 deletions
diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp deleted file mode 100644 index 5f0cfd7d69..0000000000 --- a/src/gui/kernel/qevent.cpp +++ /dev/null @@ -1,4619 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtGui module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qevent.h" -#include "qcursor.h" -#include "qapplication.h" -#include "private/qapplication_p.h" -#include "private/qevent_p.h" -#include "private/qkeysequence_p.h" -#include "qwidget.h" -#include "qgraphicsview.h" -#include "qdebug.h" -#include "qmime.h" -#include "qdnd_p.h" -#include "qevent_p.h" -#include "qgesture.h" -#include "qgesture_p.h" - -#ifdef Q_OS_SYMBIAN -#include "private/qcore_symbian_p.h" -#endif - -QT_BEGIN_NAMESPACE - -/*! - \class QInputEvent - \ingroup events - - \brief The QInputEvent class is the base class for events that - describe user input. -*/ - -/*! - \internal -*/ -QInputEvent::QInputEvent(Type type, Qt::KeyboardModifiers modifiers) - : QEvent(type), modState(modifiers) -{} - -/*! - \internal -*/ -QInputEvent::~QInputEvent() -{ -} - -/*! - \fn Qt::KeyboardModifiers QInputEvent::modifiers() const - - Returns the keyboard modifier flags that existed immediately - before the event occurred. - - \sa QApplication::keyboardModifiers() -*/ - -/*! \fn void QInputEvent::setModifiers(Qt::KeyboardModifiers modifiers) - - \internal - - Sets the keyboard modifiers flags for this event. -*/ - -/*! - \class QMouseEvent - \ingroup events - - \brief The QMouseEvent class contains parameters that describe a mouse event. - - Mouse events occur when a mouse button is pressed or released - inside a widget, or when the mouse cursor is moved. - - Mouse move events will occur only when a mouse button is pressed - down, unless mouse tracking has been enabled with - QWidget::setMouseTracking(). - - Qt automatically grabs the mouse when a mouse button is pressed - inside a widget; the widget will continue to receive mouse events - until the last mouse button is released. - - A mouse event contains a special accept flag that indicates - whether the receiver wants the event. You should call ignore() if - the mouse event is not handled by your widget. A mouse event is - propagated up the parent widget chain until a widget accepts it - with accept(), or an event filter consumes it. - - \note If a mouse event is propagated to a \l{QWidget}{widget} for - which Qt::WA_NoMousePropagation has been set, that mouse event - will not be propagated further up the parent widget chain. - - The state of the keyboard modifier keys can be found by calling the - \l{QInputEvent::modifiers()}{modifiers()} function, inherited from - QInputEvent. - - The functions pos(), x(), and y() give the cursor position - relative to the widget that receives the mouse event. If you - move the widget as a result of the mouse event, use the global - position returned by globalPos() to avoid a shaking motion. - - The QWidget::setEnabled() function can be used to enable or - disable mouse and keyboard events for a widget. - - Reimplement the QWidget event handlers, QWidget::mousePressEvent(), - QWidget::mouseReleaseEvent(), QWidget::mouseDoubleClickEvent(), - and QWidget::mouseMoveEvent() to receive mouse events in your own - widgets. - - \sa QWidget::setMouseTracking() QWidget::grabMouse() - QCursor::pos() -*/ - -/*! - Constructs a mouse event object. - - The \a type parameter must be one of QEvent::MouseButtonPress, - QEvent::MouseButtonRelease, QEvent::MouseButtonDblClick, - or QEvent::MouseMove. - - The \a position is the mouse cursor's position relative to the - receiving widget. - The \a button that caused the event is given as a value from - the Qt::MouseButton enum. If the event \a type is - \l MouseMove, the appropriate button for this event is Qt::NoButton. - The mouse and keyboard states at the time of the event are specified by - \a buttons and \a modifiers. - - The globalPos() is initialized to QCursor::pos(), which may not - be appropriate. Use the other constructor to specify the global - position explicitly. -*/ - -QMouseEvent::QMouseEvent(Type type, const QPoint &position, Qt::MouseButton button, - Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers) - : QInputEvent(type, modifiers), p(position), b(button), mouseState(buttons) -{ - g = QCursor::pos(); -} - -/*! - \internal -*/ -QMouseEvent::~QMouseEvent() -{ -} - - -/*! - Constructs a mouse event object. - - The \a type parameter must be QEvent::MouseButtonPress, - QEvent::MouseButtonRelease, QEvent::MouseButtonDblClick, - or QEvent::MouseMove. - - The \a pos is the mouse cursor's position relative to the - receiving widget. The cursor's position in global coordinates is - specified by \a globalPos. The \a button that caused the event is - given as a value from the \l Qt::MouseButton enum. If the event \a - type is \l MouseMove, the appropriate button for this event is - Qt::NoButton. \a buttons is the state of all buttons at the - time of the event, \a modifiers the state of all keyboard - modifiers. - -*/ -QMouseEvent::QMouseEvent(Type type, const QPoint &pos, const QPoint &globalPos, - Qt::MouseButton button, Qt::MouseButtons buttons, - Qt::KeyboardModifiers modifiers) - : QInputEvent(type, modifiers), p(pos), g(globalPos), b(button), mouseState(buttons) -{} - -/*! - \internal -*/ -QMouseEvent *QMouseEvent::createExtendedMouseEvent(Type type, const QPointF &pos, - const QPoint &globalPos, Qt::MouseButton button, - Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers) -{ - return new QMouseEventEx(type, pos, globalPos, button, buttons, modifiers); -} - -/*! - \fn bool QMouseEvent::hasExtendedInfo() const - \internal -*/ - -/*! - \since 4.4 - - Returns the position of the mouse cursor as a QPointF, relative to the - widget that received the event. - - If you move the widget as a result of the mouse event, use the - global position returned by globalPos() to avoid a shaking - motion. - - \sa x() y() pos() globalPos() -*/ -QPointF QMouseEvent::posF() const -{ - return hasExtendedInfo() ? reinterpret_cast<const QMouseEventEx *>(this)->posF : QPointF(pos()); -} - -/*! - \internal -*/ -QMouseEventEx::QMouseEventEx(Type type, const QPointF &pos, const QPoint &globalPos, - Qt::MouseButton button, Qt::MouseButtons buttons, - Qt::KeyboardModifiers modifiers) - : QMouseEvent(type, pos.toPoint(), globalPos, button, buttons, modifiers), posF(pos) -{ - d = reinterpret_cast<QEventPrivate *>(this); -} - -/*! - \internal -*/ -QMouseEventEx::~QMouseEventEx() -{ -} - -/*! - \fn const QPoint &QMouseEvent::pos() const - - Returns the position of the mouse cursor, relative to the widget - that received the event. - - If you move the widget as a result of the mouse event, use the - global position returned by globalPos() to avoid a shaking - motion. - - \sa x() y() globalPos() -*/ - -/*! - \fn const QPoint &QMouseEvent::globalPos() const - - Returns the global position of the mouse cursor \e{at the time - of the event}. This is important on asynchronous window systems - like X11. Whenever you move your widgets around in response to - mouse events, globalPos() may differ a lot from the current - pointer position QCursor::pos(), and from - QWidget::mapToGlobal(pos()). - - \sa globalX() globalY() -*/ - -/*! - \fn int QMouseEvent::x() const - - Returns the x position of the mouse cursor, relative to the - widget that received the event. - - \sa y() pos() -*/ - -/*! - \fn int QMouseEvent::y() const - - Returns the y position of the mouse cursor, relative to the - widget that received the event. - - \sa x() pos() -*/ - -/*! - \fn int QMouseEvent::globalX() const - - Returns the global x position of the mouse cursor at the time of - the event. - - \sa globalY() globalPos() -*/ - -/*! - \fn int QMouseEvent::globalY() const - - Returns the global y position of the mouse cursor at the time of - the event. - - \sa globalX() globalPos() -*/ - -/*! - \fn Qt::MouseButton QMouseEvent::button() const - - Returns the button that caused the event. - - Note that the returned value is always Qt::NoButton for mouse - move events. - - \sa buttons() Qt::MouseButton -*/ - -/*! - \fn Qt::MouseButton QMouseEvent::buttons() const - - Returns the button state when the event was generated. The button - state is a combination of Qt::LeftButton, Qt::RightButton, - Qt::MidButton using the OR operator. For mouse move events, - this is all buttons that are pressed down. For mouse press and - double click events this includes the button that caused the - event. For mouse release events this excludes the button that - caused the event. - - \sa button() Qt::MouseButton -*/ - - -/*! - \fn Qt::ButtonState QMouseEvent::state() const - - Returns the button state immediately before the event was - generated. The button state is a combination of mouse buttons - (see Qt::ButtonState) and keyboard modifiers (Qt::MouseButtons). - - Use buttons() and/or modifiers() instead. Be aware that buttons() - return the state immediately \e after the event was generated. -*/ - -/*! - \fn Qt::ButtonState QMouseEvent::stateAfter() const - - Returns the button state immediately after the event was - generated. The button state is a combination of mouse buttons - (see Qt::ButtonState) and keyboard modifiers (Qt::MouseButtons). - - Use buttons() and/or modifiers() instead. -*/ - -/*! - \class QHoverEvent - \ingroup events - - \brief The QHoverEvent class contains parameters that describe a mouse event. - - Mouse events occur when a mouse cursor is moved into, out of, or within a - widget, and if the widget has the Qt::WA_Hover attribute. - - The function pos() gives the current cursor position, while oldPos() gives - the old mouse position. - - There are a few similarities between the events QEvent::HoverEnter - and QEvent::HoverLeave, and the events QEvent::Enter and QEvent::Leave. - However, they are slightly different because we do an update() in the event - handler of HoverEnter and HoverLeave. - - QEvent::HoverMove is also slightly different from QEvent::MouseMove. Let us - consider a top-level window A containing a child B which in turn contains a - child C (all with mouse tracking enabled): - - \image hoverevents.png - - Now, if you move the cursor from the top to the bottom in the middle of A, - you will get the following QEvent::MouseMove events: - - \list 1 - \o A::MouseMove - \o B::MouseMove - \o C::MouseMove - \endlist - - You will get the same events for QEvent::HoverMove, except that the event - always propagates to the top-level regardless whether the event is accepted - or not. It will only stop propagating with the Qt::WA_NoMousePropagation - attribute. - - In this case the events will occur in the following way: - - \list 1 - \o A::HoverMove - \o A::HoverMove, B::HoverMove - \o A::HoverMove, B::HoverMove, C::HoverMove - \endlist - -*/ - -/*! - \fn const QPoint &QHoverEvent::pos() const - - Returns the position of the mouse cursor, relative to the widget - that received the event. - - On QEvent::HoverLeave events, this position will always be - QPoint(-1, -1). - - \sa oldPos() -*/ - -/*! - \fn const QPoint &QHoverEvent::oldPos() const - - Returns the previous position of the mouse cursor, relative to the widget - that received the event. If there is no previous position, oldPos() will - return the same position as pos(). - - On QEvent::HoverEnter events, this position will always be - QPoint(-1, -1). - - \sa pos() -*/ - -/*! - Constructs a hover event object. - - The \a type parameter must be QEvent::HoverEnter, - QEvent::HoverLeave, or QEvent::HoverMove. - - The \a pos is the current mouse cursor's position relative to the - receiving widget, while \a oldPos is the previous mouse cursor's - position relative to the receiving widget. -*/ -QHoverEvent::QHoverEvent(Type type, const QPoint &pos, const QPoint &oldPos) - : QEvent(type), p(pos), op(oldPos) -{ -} - -/*! - \internal -*/ -QHoverEvent::~QHoverEvent() -{ -} - - -/*! - \class QWheelEvent - \brief The QWheelEvent class contains parameters that describe a wheel event. - - \ingroup events - - Wheel events are sent to the widget under the mouse cursor, but - if that widget does not handle the event they are sent to the - focus widget. The rotation distance is provided by delta(). - The functions pos() and globalPos() return the mouse cursor's - location at the time of the event. - - A wheel event contains a special accept flag that indicates - whether the receiver wants the event. You should call ignore() if - you do not handle the wheel event; this ensures that it will be - sent to the parent widget. - - The QWidget::setEnabled() function can be used to enable or - disable mouse and keyboard events for a widget. - - The event handler QWidget::wheelEvent() receives wheel events. - - \sa QMouseEvent QWidget::grabMouse() -*/ - -/*! - \fn Qt::MouseButtons QWheelEvent::buttons() const - - Returns the mouse state when the event occurred. -*/ - -/*! - \fn Qt::Orientation QWheelEvent::orientation() const - - Returns the wheel's orientation. -*/ - -/*! - Constructs a wheel event object. - - The position, \a pos, is the location of the mouse cursor within - the widget. The globalPos() is initialized to QCursor::pos() - which is usually, but not always, correct. - Use the other constructor if you need to specify the global - position explicitly. - - The \a buttons describe the state of the mouse buttons at the time - of the event, \a delta contains the rotation distance, - \a modifiers holds the keyboard modifier flags at the time of the - event, and \a orient holds the wheel's orientation. - - \sa pos() delta() state() -*/ -#ifndef QT_NO_WHEELEVENT -QWheelEvent::QWheelEvent(const QPoint &pos, int delta, - Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, - Qt::Orientation orient) - : QInputEvent(Wheel, modifiers), p(pos), d(delta), mouseState(buttons), o(orient) -{ - g = QCursor::pos(); -} - -/*! - \internal -*/ -QWheelEvent::~QWheelEvent() -{ -} - -/*! - Constructs a wheel event object. - - The \a pos provides the location of the mouse cursor - within the widget. The position in global coordinates is specified - by \a globalPos. \a delta contains the rotation distance, \a modifiers - holds the keyboard modifier flags at the time of the event, and - \a orient holds the wheel's orientation. - - \sa pos() globalPos() delta() state() -*/ -QWheelEvent::QWheelEvent(const QPoint &pos, const QPoint& globalPos, int delta, - Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, - Qt::Orientation orient) - : QInputEvent(Wheel, modifiers), p(pos), g(globalPos), d(delta), mouseState(buttons), o(orient) -{} - -#endif // QT_NO_WHEELEVENT - -/*! - \fn int QWheelEvent::delta() const - - Returns the distance that the wheel is rotated, in eighths of a - degree. A positive value indicates that the wheel was rotated - forwards away from the user; a negative value indicates that the - wheel was rotated backwards toward the user. - - Most mouse types work in steps of 15 degrees, in which case the - delta value is a multiple of 120; i.e., 120 units * 1/8 = 15 degrees. - - However, some mice have finer-resolution wheels and send delta values - that are less than 120 units (less than 15 degrees). To support this - possibility, you can either cumulatively add the delta values from events - until the value of 120 is reached, then scroll the widget, or you can - partially scroll the widget in response to each wheel event. - - Example: - - \snippet doc/src/snippets/code/src_gui_kernel_qevent.cpp 0 -*/ - -/*! - \fn const QPoint &QWheelEvent::pos() const - - Returns the position of the mouse cursor relative to the widget - that received the event. - - If you move your widgets around in response to mouse events, - use globalPos() instead of this function. - - \sa x() y() globalPos() -*/ - -/*! - \fn int QWheelEvent::x() const - - Returns the x position of the mouse cursor, relative to the - widget that received the event. - - \sa y() pos() -*/ - -/*! - \fn int QWheelEvent::y() const - - Returns the y position of the mouse cursor, relative to the - widget that received the event. - - \sa x() pos() -*/ - - -/*! - \fn const QPoint &QWheelEvent::globalPos() const - - Returns the global position of the mouse pointer \e{at the time - of the event}. This is important on asynchronous window systems - such as X11; whenever you move your widgets around in response to - mouse events, globalPos() can differ a lot from the current - cursor position returned by QCursor::pos(). - - \sa globalX() globalY() -*/ - -/*! - \fn int QWheelEvent::globalX() const - - Returns the global x position of the mouse cursor at the time of - the event. - - \sa globalY() globalPos() -*/ - -/*! - \fn int QWheelEvent::globalY() const - - Returns the global y position of the mouse cursor at the time of - the event. - - \sa globalX() globalPos() -*/ - - -/*! \obsolete - \fn Qt::ButtonState QWheelEvent::state() const - - Returns the keyboard modifier flags at the time of the event. - - The returned value is a selection of the following values, - combined using the OR operator: Qt::ShiftButton, - Qt::ControlButton, and Qt::AltButton. -*/ - - -/*! - \class QKeyEvent - \brief The QKeyEvent class describes a key event. - - \ingroup events - - Key events are sent to the widget with keyboard input focus - when keys are pressed or released. - - A key event contains a special accept flag that indicates whether - the receiver will handle the key event. You should call ignore() - if the key press or release event is not handled by your widget. - A key event is propagated up the parent widget chain until a - widget accepts it with accept() or an event filter consumes it. - Key events for multimedia keys are ignored by default. You should - call accept() if your widget handles those events. - - The QWidget::setEnable() function can be used to enable or disable - mouse and keyboard events for a widget. - - The event handlers QWidget::keyPressEvent(), QWidget::keyReleaseEvent(), - QGraphicsItem::keyPressEvent() and QGraphicsItem::keyReleaseEvent() - receive key events. - - \sa QFocusEvent, QWidget::grabKeyboard() -*/ - -/*! - Constructs a key event object. - - The \a type parameter must be QEvent::KeyPress, QEvent::KeyRelease, - or QEvent::ShortcutOverride. - - Int \a key is the code for the Qt::Key that the event loop should listen - for. If \a key is 0, the event is not a result of a known key; for - example, it may be the result of a compose sequence or keyboard macro. - The \a modifiers holds the keyboard modifiers, and the given \a text - is the Unicode text that the key generated. If \a autorep is true, - isAutoRepeat() will be true. \a count is the number of keys involved - in the event. -*/ -QKeyEvent::QKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers, const QString& text, - bool autorep, ushort count) - : QInputEvent(type, modifiers), txt(text), k(key), c(count), autor(autorep) -{ -} - -/*! - \internal -*/ -QKeyEvent::~QKeyEvent() -{ -} - -/*! - \internal -*/ -QKeyEvent *QKeyEvent::createExtendedKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers, - quint32 nativeScanCode, quint32 nativeVirtualKey, - quint32 nativeModifiers, - const QString& text, bool autorep, ushort count) -{ - return new QKeyEventEx(type, key, modifiers, text, autorep, count, - nativeScanCode, nativeVirtualKey, nativeModifiers); -} - -/*! - \fn bool QKeyEvent::hasExtendedInfo() const - \internal -*/ - -/*! - \since 4.2 - - Returns the native scan code of the key event. If the key event - does not contain this data 0 is returned. - - Note: The native scan code may be 0, even if the key event contains - extended information. - - Note: On Mac OS/X, this function is not useful, because there is no - way to get the scan code from Carbon or Cocoa. The function always - returns 1 (or 0 in the case explained above). -*/ -quint32 QKeyEvent::nativeScanCode() const -{ - return (reinterpret_cast<const QKeyEvent*>(d) != this - ? 0 : reinterpret_cast<const QKeyEventEx*>(this)->nScanCode); -} - -/*! - \since 4.2 - - Returns the native virtual key, or key sym of the key event. - If the key event does not contain this data 0 is returned. - - Note: The native virtual key may be 0, even if the key event contains extended information. -*/ -quint32 QKeyEvent::nativeVirtualKey() const -{ - return (reinterpret_cast<const QKeyEvent*>(d) != this - ? 0 : reinterpret_cast<const QKeyEventEx*>(this)->nVirtualKey); -} - -/*! - \since 4.2 - - Returns the native modifiers of a key event. - If the key event does not contain this data 0 is returned. - - Note: The native modifiers may be 0, even if the key event contains extended information. -*/ -quint32 QKeyEvent::nativeModifiers() const -{ - return (reinterpret_cast<const QKeyEvent*>(d) != this - ? 0 : reinterpret_cast<const QKeyEventEx*>(this)->nModifiers); -} - -/*! - \internal - Creates an extended key event object, which in addition to the normal key event data, also - contains the native scan code, virtual key and modifiers. This extra data is used by the - shortcut system, to determine which shortcuts to trigger. -*/ -QKeyEventEx::QKeyEventEx(Type type, int key, Qt::KeyboardModifiers modifiers, - const QString &text, bool autorep, ushort count, - quint32 nativeScanCode, quint32 nativeVirtualKey, quint32 nativeModifiers) - : QKeyEvent(type, key, modifiers, text, autorep, count), - nScanCode(nativeScanCode), nVirtualKey(nativeVirtualKey), nModifiers(nativeModifiers) -{ - d = reinterpret_cast<QEventPrivate*>(this); -} - -/*! - \internal - Creates a copy of an other extended key event. -*/ -QKeyEventEx::QKeyEventEx(const QKeyEventEx &other) - : QKeyEvent(QEvent::Type(other.t), other.k, other.modState, other.txt, other.autor, other.c), - nScanCode(other.nScanCode), nVirtualKey(other.nVirtualKey), nModifiers(other.nModifiers) -{ - d = reinterpret_cast<QEventPrivate*>(this); -} - -/*! - \internal -*/ -QKeyEventEx::~QKeyEventEx() -{ -} - -/*! - \fn int QKeyEvent::key() const - - Returns the code of the key that was pressed or released. - - See \l Qt::Key for the list of keyboard codes. These codes are - independent of the underlying window system. Note that this - function does not distinguish between capital and non-capital - letters, use the text() function (returning the Unicode text the - key generated) for this purpose. - - A value of either 0 or Qt::Key_unknown means that the event is not - the result of a known key; for example, it may be the result of - a compose sequence, a keyboard macro, or due to key event - compression. - - \sa Qt::WA_KeyCompression -*/ - -/*! - \fn QString QKeyEvent::text() const - - Returns the Unicode text that this key generated. The text - returned can be an empty string in cases - where modifier keys, such as Shift, Control, Alt, and Meta, - are being pressed or released. In such cases key() will contain - a valid value. - - \sa Qt::WA_KeyCompression -*/ - -/*! - Returns the keyboard modifier flags that existed immediately - after the event occurred. - - \warning This function cannot always be trusted. The user can - confuse it by pressing both \key{Shift} keys simultaneously and - releasing one of them, for example. - - \sa QApplication::keyboardModifiers() -*/ -//###### We must check with XGetModifierMapping -Qt::KeyboardModifiers QKeyEvent::modifiers() const -{ - if (key() == Qt::Key_Shift) - return Qt::KeyboardModifiers(QInputEvent::modifiers()^Qt::ShiftModifier); - if (key() == Qt::Key_Control) - return Qt::KeyboardModifiers(QInputEvent::modifiers()^Qt::ControlModifier); - if (key() == Qt::Key_Alt) - return Qt::KeyboardModifiers(QInputEvent::modifiers()^Qt::AltModifier); - if (key() == Qt::Key_Meta) - return Qt::KeyboardModifiers(QInputEvent::modifiers()^Qt::MetaModifier); - return QInputEvent::modifiers(); -} - -#ifndef QT_NO_SHORTCUT -/*! - \fn bool QKeyEvent::matches(QKeySequence::StandardKey key) const - \since 4.2 - - Returns true if the key event matches the given standard \a key; - otherwise returns false. -*/ -bool QKeyEvent::matches(QKeySequence::StandardKey matchKey) const -{ - uint searchkey = (modifiers() | key()) & ~(Qt::KeypadModifier); //The keypad modifier should not make a difference - uint platform = QApplicationPrivate::currentPlatform(); - -#ifdef Q_WS_MAC - if (qApp->testAttribute(Qt::AA_MacDontSwapCtrlAndMeta)) { - uint oldSearchKey = searchkey; - searchkey &= ~(Qt::ControlModifier | Qt::MetaModifier); - if (oldSearchKey & Qt::ControlModifier) - searchkey |= Qt::MetaModifier; - if (oldSearchKey & Qt::MetaModifier) - searchkey |= Qt::ControlModifier; - } -#endif - - uint N = QKeySequencePrivate::numberOfKeyBindings; - int first = 0; - int last = N - 1; - - while (first <= last) { - int mid = (first + last) / 2; - QKeyBinding midVal = QKeySequencePrivate::keyBindings[mid]; - - if (searchkey > midVal.shortcut){ - first = mid + 1; // Search in top half - } - else if (searchkey < midVal.shortcut){ - last = mid - 1; // Search in bottom half - } - else { - //found correct shortcut value, now we must check for platform match - if ((midVal.platform & platform) && (midVal.standardKey == matchKey)) { - return true; - } else { //We may have several equal values for different platforms, so we must search in both directions - - //search forward - for ( unsigned int i = mid + 1 ; i < N - 1 ; ++i) { - QKeyBinding current = QKeySequencePrivate::keyBindings[i]; - if (current.shortcut != searchkey) - break; - else if (current.platform & platform && current.standardKey == matchKey) - return true; - } - - //search back - for ( int i = mid - 1 ; i >= 0 ; --i) { - QKeyBinding current = QKeySequencePrivate::keyBindings[i]; - if (current.shortcut != searchkey) - break; - else if (current.platform & platform && current.standardKey == matchKey) - return true; - } - return false; //we could not find it among the matching keySequences - } - } - } - return false; //we could not find matching keySequences at all -} -#endif // QT_NO_SHORTCUT - - -/*! - \fn bool QKeyEvent::isAutoRepeat() const - - Returns true if this event comes from an auto-repeating key; - returns false if it comes from an initial key press. - - Note that if the event is a multiple-key compressed event that is - partly due to auto-repeat, this function could return either true - or false indeterminately. -*/ - -/*! - \fn int QKeyEvent::count() const - - Returns the number of keys involved in this event. If text() - is not empty, this is simply the length of the string. - - \sa Qt::WA_KeyCompression -*/ - -/*! - \class QFocusEvent - \brief The QFocusEvent class contains event parameters for widget focus - events. - - \ingroup events - - Focus events are sent to widgets when the keyboard input focus - changes. Focus events occur due to mouse actions, key presses - (such as \gui{Tab} or \gui{Backtab}), the window system, popup - menus, keyboard shortcuts, or other application-specific reasons. - The reason for a particular focus event is returned by reason() - in the appropriate event handler. - - The event handlers QWidget::focusInEvent(), - QWidget::focusOutEvent(), QGraphicsItem::focusInEvent and - QGraphicsItem::focusOutEvent() receive focus events. - - \sa QWidget::setFocus(), QWidget::setFocusPolicy(), {Keyboard Focus} -*/ - -/*! - Constructs a focus event object. - - The \a type parameter must be either QEvent::FocusIn or - QEvent::FocusOut. The \a reason describes the cause of the change - in focus. -*/ -QFocusEvent::QFocusEvent(Type type, Qt::FocusReason reason) - : QEvent(type), m_reason(reason) -{} - -/*! - \internal -*/ -QFocusEvent::~QFocusEvent() -{ -} - -// ### Qt 5: remove -/*! - \internal - */ -Qt::FocusReason QFocusEvent::reason() -{ - return m_reason; -} - -/*! - Returns the reason for this focus event. - */ -Qt::FocusReason QFocusEvent::reason() const -{ - return m_reason; -} - -/*! - \fn bool QFocusEvent::gotFocus() const - - Returns true if type() is QEvent::FocusIn; otherwise returns - false. -*/ - -/*! - \fn bool QFocusEvent::lostFocus() const - - Returns true if type() is QEvent::FocusOut; otherwise returns - false. -*/ - - -/*! - \class QPaintEvent - \brief The QPaintEvent class contains event parameters for paint events. - - \ingroup events - - Paint events are sent to widgets that need to update themselves, - for instance when part of a widget is exposed because a covering - widget was moved. - - The event contains a region() that needs to be updated, and a - rect() that is the bounding rectangle of that region. Both are - provided because many widgets can't make much use of region(), - and rect() can be much faster than region().boundingRect(). - - \section1 Automatic Clipping - - Painting is clipped to region() during the processing of a paint - event. This clipping is performed by Qt's paint system and is - independent of any clipping that may be applied to a QPainter used to - draw on the paint device. - - As a result, the value returned by QPainter::clipRegion() on - a newly-constructed QPainter will not reflect the clip region that is - used by the paint system. - - \sa QPainter, QWidget::update(), QWidget::repaint(), - QWidget::paintEvent() -*/ - -/*! - \fn bool QPaintEvent::erased() const - \compat - - Returns true if the paint event region (or rectangle) has been - erased with the widget's background; otherwise returns false. - - Qt 4 \e always erases regions that require painting. The exception - to this rule is if the widget sets the Qt::WA_OpaquePaintEvent or - Qt::WA_NoSystemBackground attributes. If either one of those - attributes is set \e and the window system does not make use of - subwidget alpha composition (currently X11 and Windows, but this - may change), then the region is not erased. -*/ - -/*! - \fn void QPaintEvent::setErased(bool b) { m_erased = b; } - \internal -*/ - -/*! - Constructs a paint event object with the region that needs to - be updated. The region is specified by \a paintRegion. -*/ -QPaintEvent::QPaintEvent(const QRegion& paintRegion) - : QEvent(Paint), m_rect(paintRegion.boundingRect()), m_region(paintRegion), m_erased(false) -{} - -/*! - Constructs a paint event object with the rectangle that needs - to be updated. The region is specified by \a paintRect. -*/ -QPaintEvent::QPaintEvent(const QRect &paintRect) - : QEvent(Paint), m_rect(paintRect),m_region(paintRect), m_erased(false) -{} - - -/*! - \internal -*/ -QPaintEvent::~QPaintEvent() -{ -} - -/*! - \fn const QRect &QPaintEvent::rect() const - - Returns the rectangle that needs to be updated. - - \sa region() QPainter::setClipRect() -*/ - -/*! - \fn const QRegion &QPaintEvent::region() const - - Returns the region that needs to be updated. - - \sa rect() QPainter::setClipRegion() -*/ - - -QUpdateLaterEvent::QUpdateLaterEvent(const QRegion& paintRegion) - : QEvent(UpdateLater), m_region(paintRegion) -{ -} - -QUpdateLaterEvent::~QUpdateLaterEvent() -{ -} - -/*! - \class QMoveEvent - \brief The QMoveEvent class contains event parameters for move events. - - \ingroup events - - Move events are sent to widgets that have been moved to a new - position relative to their parent. - - The event handler QWidget::moveEvent() receives move events. - - \sa QWidget::move(), QWidget::setGeometry() -*/ - -/*! - Constructs a move event with the new and old widget positions, - \a pos and \a oldPos respectively. -*/ -QMoveEvent::QMoveEvent(const QPoint &pos, const QPoint &oldPos) - : QEvent(Move), p(pos), oldp(oldPos) -{} - -/*! - \internal -*/ -QMoveEvent::~QMoveEvent() -{ -} - -/*! - \fn const QPoint &QMoveEvent::pos() const - - Returns the new position of the widget. This excludes the window - frame for top level widgets. -*/ - -/*! - \fn const QPoint &QMoveEvent::oldPos() const - - Returns the old position of the widget. -*/ - - -/*! - \class QResizeEvent - \brief The QResizeEvent class contains event parameters for resize events. - - \ingroup events - - Resize events are sent to widgets that have been resized. - - The event handler QWidget::resizeEvent() receives resize events. - - \sa QWidget::resize() QWidget::setGeometry() -*/ - -/*! - Constructs a resize event with the new and old widget sizes, \a - size and \a oldSize respectively. -*/ -QResizeEvent::QResizeEvent(const QSize &size, const QSize &oldSize) - : QEvent(Resize), s(size), olds(oldSize) -{} - -/*! - \internal -*/ -QResizeEvent::~QResizeEvent() -{ -} - -/*! - \fn const QSize &QResizeEvent::size() const - - Returns the new size of the widget. This is the same as - QWidget::size(). -*/ - -/*! - \fn const QSize &QResizeEvent::oldSize() const - - Returns the old size of the widget. -*/ - - -/*! - \class QCloseEvent - \brief The QCloseEvent class contains parameters that describe a close event. - - \ingroup events - - Close events are sent to widgets that the user wants to close, - usually by choosing "Close" from the window menu, or by clicking - the \gui{X} title bar button. They are also sent when you call - QWidget::close() to close a widget programmatically. - - Close events contain a flag that indicates whether the receiver - wants the widget to be closed or not. When a widget accepts the - close event, it is hidden (and destroyed if it was created with - the Qt::WA_DeleteOnClose flag). If it refuses to accept the close - event nothing happens. (Under X11 it is possible that the window - manager will forcibly close the window; but at the time of writing - we are not aware of any window manager that does this.) - - The event handler QWidget::closeEvent() receives close events. The - default implementation of this event handler accepts the close - event. If you do not want your widget to be hidden, or want some - special handing, you should reimplement the event handler and - ignore() the event. - - The \l{mainwindows/application#close event handler}{closeEvent() in the - Application example} shows a close event handler that - asks whether to save a document before closing. - - If you want the widget to be deleted when it is closed, create it - with the Qt::WA_DeleteOnClose flag. This is very useful for - independent top-level windows in a multi-window application. - - \l{QObject}s emits the \l{QObject::destroyed()}{destroyed()} - signal when they are deleted. - - If the last top-level window is closed, the - QApplication::lastWindowClosed() signal is emitted. - - The isAccepted() function returns true if the event's receiver has - agreed to close the widget; call accept() to agree to close the - widget and call ignore() if the receiver of this event does not - want the widget to be closed. - - \sa QWidget::close(), QWidget::hide(), QObject::destroyed(), - QCoreApplication::exec(), QCoreApplication::quit(), - QApplication::lastWindowClosed() -*/ - -/*! - Constructs a close event object. - - \sa accept() -*/ -QCloseEvent::QCloseEvent() - : QEvent(Close) -{} - -/*! \internal -*/ -QCloseEvent::~QCloseEvent() -{ -} - -/*! - \class QIconDragEvent - \brief The QIconDragEvent class indicates that a main icon drag has begun. - - \ingroup events - - Icon drag events are sent to widgets when the main icon of a window - has been dragged away. On Mac OS X, this happens when the proxy - icon of a window is dragged off the title bar. - - It is normal to begin using drag and drop in response to this - event. - - \sa {Drag and Drop}, QMimeData, QDrag -*/ - -/*! - Constructs an icon drag event object with the accept flag set to - false. - - \sa accept() -*/ -QIconDragEvent::QIconDragEvent() - : QEvent(IconDrag) -{ ignore(); } - -/*! \internal */ -QIconDragEvent::~QIconDragEvent() -{ -} - -/*! - \class QContextMenuEvent - \brief The QContextMenuEvent class contains parameters that describe a context menu event. - - \ingroup events - - Context menu events are sent to widgets when a user performs - an action associated with opening a context menu. - The actions required to open context menus vary between platforms; - for example, on Windows, pressing the menu button or clicking the - right mouse button will cause this event to be sent. - - 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. -*/ - -#ifndef QT_NO_CONTEXTMENU -/*! - 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) -{} - -/*! - 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. The \a modifiers holds the keyboard modifiers. -*/ -QContextMenuEvent::QContextMenuEvent(Reason reason, const QPoint &pos, const QPoint &globalPos, - Qt::KeyboardModifiers modifiers) - : QInputEvent(ContextMenu, modifiers), p(pos), gp(globalPos), reas(reason) -{} - - -/*! \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(); -} - -/*! - \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() -*/ -#endif // QT_NO_CONTEXTMENU - -/*! - \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() or - QGraphicsItem::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 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: - - \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 behavior 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. - - \value Selection - If set, the edit cursor should be moved to the specified position - in the editor text contents. In contrast with \c 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. - - \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() -*/ - -/*! - \fn int QInputMethodEvent::replacementLength() const - - Returns the number of characters to be replaced in the preedit - string. - - \sa replacementStart(), setCommitString() -*/ - -#ifndef QT_NO_TABLETEVENT - -/*! - \class QTabletEvent - \brief The QTabletEvent class contains parameters that describe a Tablet event. - - \ingroup events - - Tablet Events are generated from a Wacom tablet. Most of the time you will - want to deal with events from the tablet as if they were events from a - mouse; for example, you would retrieve the cursor position with x(), y(), - pos(), globalX(), globalY(), and globalPos(). In some situations you may - wish to retrieve the extra information provided by the tablet device - driver; for example, you might want to do subpixeling with higher - resolution coordinates or you may want to adjust color brightness based on - pressure. QTabletEvent allows you to read the pressure(), the xTilt(), and - yTilt(), as well as the type of device being used with device() (see - \l{TabletDevice}). It can also give you the minimum and maximum values for - each device's pressure and high resolution coordinates. - - A tablet event contains a special accept flag that indicates whether the - receiver wants the event. You should call QTabletEvent::accept() if you - handle the tablet event; otherwise it will be sent to the parent widget. - The exception are TabletEnterProximity and TabletLeaveProximity events, - these are only sent to QApplication and don't check whether or not they are - accepted. - - The QWidget::setEnabled() function can be used to enable or - disable mouse and keyboard events for a widget. - - The event handler QWidget::tabletEvent() receives all three types of - tablet events. Qt will first send a tabletEvent then, if it is not - accepted, it will send a mouse event. This allows applications that - don't utilize tablets to use a tablet like a mouse, while also - enabling those who want to use both tablets and mouses differently. - - \section1 Notes for X11 Users - - Qt uses the following hard-coded names to identify tablet - devices from the xorg.conf file on X11 (apart from IRIX): - 'stylus', 'pen', and 'eraser'. If the devices have other names, - they will not be picked up Qt. -*/ - -/*! - \enum QTabletEvent::TabletDevice - - This enum defines what type of device is generating the event. - - \value NoDevice No device, or an unknown device. - \value Puck A Puck (a device that is similar to a flat mouse with - a transparent circle with cross-hairs). - \value Stylus A Stylus. - \value Airbrush An airbrush - \value FourDMouse A 4D Mouse. - \value RotationStylus A special stylus that also knows about rotation - (a 6D stylus). \since 4.1 - \omitvalue XFreeEraser -*/ - -/*! - \enum QTabletEvent::PointerType - - This enum defines what type of point is generating the event. - - \value UnknownPointer An unknown device. - \value Pen Tip end of a stylus-like device (the narrow end of the pen). - \value Cursor Any puck-like device. - \value Eraser Eraser end of a stylus-like device (the broad end of the pen). - - \sa pointerType() -*/ - -/*! - Construct a tablet event of the given \a type. - - The \a pos parameter indicates where the event occurred in the - widget; \a globalPos is the corresponding position in absolute - coordinates. The \a hiResGlobalPos contains a high resolution - measurement of the position. - - \a pressure contains the pressure exerted on the \a device. - - \a pointerType describes the type of pen that is being used. - - \a xTilt and \a yTilt contain the device's degree of tilt from the - x and y axes respectively. - - \a keyState specifies which keyboard modifiers are pressed (e.g., - \key{Ctrl}). - - The \a uniqueID parameter contains the unique ID for the current device. - - The \a z parameter contains the coordinate of the device on the tablet, this - is usually given by a wheel on 4D mouse. If the device does not support a - Z-axis, pass zero here. - - The \a tangentialPressure parameter contins the tangential pressure of an air - brush. If the device does not support tangential pressure, pass 0 here. - - \a rotation contains the device's rotation in degrees. 4D mice support - rotation. If the device does not support rotation, pass 0 here. - - \sa pos() globalPos() device() pressure() xTilt() yTilt() uniqueId(), rotation(), tangentialPressure(), z() -*/ - -QTabletEvent::QTabletEvent(Type type, const QPoint &pos, const QPoint &globalPos, - const QPointF &hiResGlobalPos, int device, int pointerType, - qreal pressure, int xTilt, int yTilt, qreal tangentialPressure, - qreal rotation, int z, Qt::KeyboardModifiers keyState, qint64 uniqueID) - : QInputEvent(type, keyState), - mPos(pos), - mGPos(globalPos), - mHiResGlobalPos(hiResGlobalPos), - mDev(device), - mPointerType(pointerType), - mXT(xTilt), - mYT(yTilt), - mZ(z), - mPress(pressure), - mTangential(tangentialPressure), - mRot(rotation), - mUnique(uniqueID), - mExtra(0) -{ -} - -/*! - \internal -*/ -QTabletEvent::~QTabletEvent() -{ -} - -/*! - \fn TabletDevices QTabletEvent::device() const - - Returns the type of device that generated the event. - - \sa TabletDevice -*/ - -/*! - \fn PointerType QTabletEvent::pointerType() const - - Returns the type of point that generated the event. -*/ - -/*! - \fn qreal QTabletEvent::tangentialPressure() const - - Returns the tangential pressure for the device. This is typically given by a finger - wheel on an airbrush tool. The range is from -1.0 to 1.0. 0.0 indicates a - neutral position. Current airbrushes can only move in the positive - direction from the neutrual position. If the device does not support - tangential pressure, this value is always 0.0. - - \sa pressure() -*/ - -/*! - \fn qreal QTabletEvent::rotation() const - - Returns the rotation of the current device in degress. This is usually - given by a 4D Mouse. If the device doesn't support rotation this value is - always 0.0. - -*/ - -/*! - \fn qreal QTabletEvent::pressure() const - - Returns the pressure for the device. 0.0 indicates that the stylus is not - on the tablet, 1.0 indicates the maximum amount of pressure for the stylus. - - \sa tangentialPressure() -*/ - -/*! - \fn int QTabletEvent::xTilt() const - - Returns the angle between the device (a pen, for example) and the - perpendicular in the direction of the x axis. - Positive values are towards the tablet's physical right. The angle - is in the range -60 to +60 degrees. - - \img qtabletevent-tilt.png - - \sa yTilt() -*/ - -/*! - \fn int QTabletEvent::yTilt() const - - Returns the angle between the device (a pen, for example) and the - perpendicular in the direction of the y axis. - Positive values are towards the bottom of the tablet. The angle is - within the range -60 to +60 degrees. - - \sa xTilt() -*/ - -/*! - \fn const QPoint &QTabletEvent::pos() const - - Returns the position of the device, relative to the widget that - received the event. - - If you move widgets around in response to mouse events, use - globalPos() instead of this function. - - \sa x() y() globalPos() -*/ - -/*! - \fn int QTabletEvent::x() const - - Returns the x position of the device, relative to the widget that - received the event. - - \sa y() pos() -*/ - -/*! - \fn int QTabletEvent::y() const - - Returns the y position of the device, relative to the widget that - received the event. - - \sa x() pos() -*/ - -/*! - \fn int QTabletEvent::z() const - - Returns the z position of the device. Typically this is represented by a - wheel on a 4D Mouse. If the device does not support a Z-axis, this value is - always zero. This is \bold not the same as pressure. - - \sa pressure() -*/ - -/*! - \fn const QPoint &QTabletEvent::globalPos() const - - Returns the global position of the device \e{at the time of the - event}. This is important on asynchronous windows systems like X11; - whenever you move your widgets around in response to mouse events, - globalPos() can differ significantly from the current position - QCursor::pos(). - - \sa globalX() globalY() hiResGlobalPos() -*/ - -/*! - \fn int QTabletEvent::globalX() const - - Returns the global x position of the mouse pointer at the time of - the event. - - \sa globalY() globalPos() hiResGlobalX() -*/ - -/*! - \fn int QTabletEvent::globalY() const - - Returns the global y position of the tablet device at the time of - the event. - - \sa globalX() globalPos() hiResGlobalY() -*/ - -/*! - \fn qint64 QTabletEvent::uniqueId() const - - Returns a unique ID for the current device, making it possible - to differentiate between multiple devices being used at the same - time on the tablet. - - Support of this feature is dependent on the tablet. - - Values for the same device may vary from OS to OS. - - Later versions of the Wacom driver for Linux will now report - the ID information. If you have a tablet that supports unique ID - and are not getting the information on Linux, consider upgrading - your driver. - - As of Qt 4.2, the unique ID is the same regardless of the orientation - of the pen. Earlier versions would report a different value when using - the eraser-end versus the pen-end of the stylus on some OS's. - - \sa pointerType() -*/ - -/*! - \fn const QPointF &QTabletEvent::hiResGlobalPos() const - - The high precision coordinates delivered from the tablet expressed. - Sub pixeling information is in the fractional part of the QPointF. - - \sa globalPos() hiResGlobalX() hiResGlobalY() -*/ - -/*! - \fn qreal &QTabletEvent::hiResGlobalX() const - - The high precision x position of the tablet device. -*/ - -/*! - \fn qreal &QTabletEvent::hiResGlobalY() const - - The high precision y position of the tablet device. -*/ - -#endif // QT_NO_TABLETEVENT - -#ifndef QT_NO_DRAGANDDROP -/*! - Creates a QDragMoveEvent of the required \a type indicating - that the mouse is at position \a pos given within a widget. - - The mouse and keyboard states are specified by \a buttons and - \a modifiers, and the \a actions describe the types of drag - and drop operation that are possible. - The drag data is passed as MIME-encoded information in \a data. - - \warning Do not attempt to create a QDragMoveEvent yourself. - These objects rely on Qt's internal state. -*/ -QDragMoveEvent::QDragMoveEvent(const QPoint& pos, Qt::DropActions actions, const QMimeData *data, - Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type) - : QDropEvent(pos, actions, data, buttons, modifiers, type) - , rect(pos, QSize(1, 1)) -{} - -/*! - Destroys the event. -*/ -QDragMoveEvent::~QDragMoveEvent() -{ -} - -/*! - \fn void QDragMoveEvent::accept(bool y) - - Calls setAccepted(\a y) instead. -*/ - -/*! - \fn void QDragMoveEvent::accept(const QRect &rectangle) - - The same as accept(), but also notifies that future moves will - also be acceptable if they remain within the \a rectangle - given on the widget. This can improve performance, but may - also be ignored by the underlying system. - - If the rectangle is empty, drag move events will be sent - continuously. This is useful if the source is scrolling in a - timer event. -*/ - -/*! - \fn void QDragMoveEvent::accept() - - \overload - - Calls QDropEvent::accept(). -*/ - -/*! - \fn void QDragMoveEvent::ignore() - - \overload - - Calls QDropEvent::ignore(). -*/ - -/*! - \fn void QDragMoveEvent::ignore(const QRect &rectangle) - - The opposite of the accept(const QRect&) function. - Moves within the \a rectangle are not acceptable, and will be - ignored. -*/ - -/*! - \fn QRect QDragMoveEvent::answerRect() const - - Returns the rectangle in the widget where the drop will occur if accepted. - You can use this information to restrict drops to certain places on the - widget. -*/ - - -/*! - \class QDropEvent - \ingroup events - \ingroup draganddrop - - \brief The QDropEvent class provides an event which is sent when a - drag and drop action is completed. - - When a widget \l{QWidget::setAcceptDrops()}{accepts drop events}, it will - receive this event if it has accepted the most recent QDragEnterEvent or - QDragMoveEvent sent to it. - - The drop event contains a proposed action, available from proposedAction(), for - the widget to either accept or ignore. If the action can be handled by the - widget, you should call the acceptProposedAction() function. Since the - proposed action can be a combination of \l Qt::DropAction values, it may be - useful to either select one of these values as a default action or ask - the user to select their preferred action. - - If the proposed drop action is not suitable, perhaps because your custom - widget does not support that action, you can replace it with any of the - \l{possibleActions()}{possible drop actions} by calling setDropAction() - with your preferred action. If you set a value that is not present in the - bitwise OR combination of values returned by possibleActions(), the default - copy action will be used. Once a replacement drop action has been set, call - accept() instead of acceptProposedAction() to complete the drop operation. - - The mimeData() function provides the data dropped on the widget in a QMimeData - object. This contains information about the MIME type of the data in addition to - the data itself. - - \sa QMimeData, QDrag, {Drag and Drop} -*/ - -/*! - \fn const QMimeData *QDropEvent::mimeData() const - - Returns the data that was dropped on the widget and its associated MIME - type information. -*/ - -/*! - Constructs a drop event of a certain \a type corresponding to a - drop at the point specified by \a pos in the destination widget's - coordinate system. - - The \a actions indicate which types of drag and drop operation can - be performed, and the drag data is stored as MIME-encoded data in \a data. - - The states of the mouse buttons and keyboard modifiers at the time of - the drop are specified by \a buttons and \a modifiers. -*/ // ### pos is in which coordinate system? -QDropEvent::QDropEvent(const QPoint& pos, Qt::DropActions actions, const QMimeData *data, - Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type) - : QEvent(type), p(pos), mouseState(buttons), - modState(modifiers), act(actions), - mdata(data) -{ - default_action = QDragManager::self()->defaultAction(act, modifiers); - drop_action = default_action; - ignore(); -} - -/*! \internal */ -QDropEvent::~QDropEvent() -{ -} - -/*! - \compat - Returns a byte array containing the drag's data, in \a format. - - data() normally needs to get the data from the drag source, which - is potentially very slow, so it's advisable to call this function - only if you're sure that you will need the data in that - particular \a format. - - The resulting data will have a size of 0 if the format was not - available. - - \sa format() QByteArray::size() -*/ - -QByteArray QDropEvent::encodedData(const char *format) const -{ - return mdata->data(QLatin1String(format)); -} - -/*! - \compat - Returns a string describing one of the available data types for - this drag. Common examples are "text/plain" and "image/gif". - If \a n is less than zero or greater than the number of available - data types, format() returns 0. - - This function is provided mainly for debugging. Most drop targets - will use provides(). - - \sa data() provides() -*/ - -const char* QDropEvent::format(int n) const -{ - if (fmts.isEmpty()) { - QStringList formats = mdata->formats(); - for (int i = 0; i < formats.size(); ++i) - fmts.append(formats.at(i).toLatin1()); - } - if (n < 0 || n >= fmts.size()) - return 0; - return fmts.at(n).constData(); -} - -/*! - \compat - Returns true if this event provides format \a mimeType; otherwise - returns false. - - \sa data() -*/ - -bool QDropEvent::provides(const char *mimeType) const -{ - return mdata->formats().contains(QLatin1String(mimeType)); -} - -/*! - If the source of the drag operation is a widget in this - application, this function returns that source; otherwise it - returns 0. The source of the operation is the first parameter to - the QDrag object used instantiate the drag. - - This is useful if your widget needs special behavior when dragging - to itself. - - \sa QDrag::QDrag() -*/ -QWidget* QDropEvent::source() const -{ - QDragManager *manager = QDragManager::self(); - return manager ? manager->source() : 0; -} - - -void QDropEvent::setDropAction(Qt::DropAction action) -{ - if (!(action & act) && action != Qt::IgnoreAction) - action = default_action; - drop_action = action; -} - -/*! - \fn const QPoint& QDropEvent::pos() const - - Returns the position where the drop was made. -*/ - -/*! - \fn Qt::MouseButtons QDropEvent::mouseButtons() const - - Returns the mouse buttons that are pressed.. -*/ - -/*! - \fn Qt::KeyboardModifiers QDropEvent::keyboardModifiers() const - - Returns the modifier keys that are pressed. -*/ - -/*! - \fn void QDropEvent::accept() - \internal -*/ - -/*! - \fn void QDropEvent::accept(bool accept) - - Call setAccepted(\a accept) instead. -*/ - -/*! - \fn void QDropEvent::acceptAction(bool accept = true) - - Call this to indicate that the action described by action() is - accepted (i.e. if \a accept is true, which is the default), not merely - the default copy action. If you call acceptAction(true), there is - no need to also call accept(true). -*/ - -/*! - \enum QDropEvent::Action - \compat - - When a drag and drop action is completed, the target is expected - to perform an action on the data provided by the source. This - will be one of the following: - - \value Copy The default action. The source simply uses the data - provided in the operation. - \value Link The source should somehow create a link to the - location specified by the data. - \value Move The source should somehow move the object from the - location specified by the data to a new location. - \value Private The target has special knowledge of the MIME type, - which the source should respond to in a similar way to - a Copy. - \value UserAction The source and target can co-operate using - special actions. This feature is not currently - supported. - - The Link and Move actions only makes sense if the data is a - reference, for example, text/uri-list file lists (see QUriDrag). -*/ - -/*! - \fn void QDropEvent::setDropAction(Qt::DropAction action) - - Sets the \a action to be performed on the data by the target. - Use this to override the \l{proposedAction()}{proposed action} - with one of the \l{possibleActions()}{possible actions}. - - If you set a drop action that is not one of the possible actions, the - drag and drop operation will default to a copy operation. - - Once you have supplied a replacement drop action, call accept() - instead of acceptProposedAction(). - - \sa dropAction() -*/ - -/*! - \fn Qt::DropAction QDropEvent::dropAction() const - - Returns the action to be performed on the data by the target. This may be - different from the action supplied in proposedAction() if you have called - setDropAction() to explicitly choose a drop action. - - \sa setDropAction() -*/ - -/*! - \fn Qt::DropActions QDropEvent::possibleActions() const - - Returns an OR-combination of possible drop actions. - - \sa dropAction() -*/ - -/*! - \fn Qt::DropAction QDropEvent::proposedAction() const - - Returns the proposed drop action. - - \sa dropAction() -*/ - -/*! - \fn void QDropEvent::acceptProposedAction() - - Sets the drop action to be the proposed action. - - \sa setDropAction(), proposedAction(), {QEvent::accept()}{accept()} -*/ - -/*! - \fn void QDropEvent::setPoint(const QPoint &point) - \compat - - Sets the drop to happen at the given \a point. You do not normally - need to use this as it will be set internally before your widget - receives the drop event. -*/ // ### here too - what coordinate system? - - -/*! - \class QDragEnterEvent - \brief The QDragEnterEvent class provides an event which is sent - to a widget when a drag and drop action enters it. - - \ingroup events - \ingroup draganddrop - - A widget must accept this event in order to receive the \l - {QDragMoveEvent}{drag move events} that are sent while the drag - and drop action is in progress. The drag enter event is always - immediately followed by a drag move event. - - QDragEnterEvent inherits most of its functionality from - QDragMoveEvent, which in turn inherits most of its functionality - from QDropEvent. - - \sa QDragLeaveEvent, QDragMoveEvent, QDropEvent -*/ - -/*! - Constructs a QDragEnterEvent that represents a drag entering a - widget at the given \a point with mouse and keyboard states specified by - \a buttons and \a modifiers. - - The drag data is passed as MIME-encoded information in \a data, and the - specified \a actions describe the possible types of drag and drop - operation that can be performed. - - \warning Do not create a QDragEnterEvent yourself since these - objects rely on Qt's internal state. -*/ -QDragEnterEvent::QDragEnterEvent(const QPoint& point, Qt::DropActions actions, const QMimeData *data, - Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers) - : QDragMoveEvent(point, actions, data, buttons, modifiers, DragEnter) -{} - -/*! \internal -*/ -QDragEnterEvent::~QDragEnterEvent() -{ -} - -/*! - Constructs a drag response event containing the \a accepted value, - indicating whether the drag and drop operation was accepted by the - recipient. -*/ -QDragResponseEvent::QDragResponseEvent(bool accepted) - : QEvent(DragResponse), a(accepted) -{} - -/*! \internal -*/ -QDragResponseEvent::~QDragResponseEvent() -{ -} - -/*! - \class QDragMoveEvent - \brief The QDragMoveEvent class provides an event which is sent while a drag and drop action is in progress. - - \ingroup events - \ingroup draganddrop - - A widget will receive drag move events repeatedly while the drag - is within its boundaries, if it accepts - \l{QWidget::setAcceptDrops()}{drop events} and \l - {QWidget::dragEnterEvent()}{enter events}. The widget should - examine the event to see what kind of data it - \l{QDragMoveEvent::provides()}{provides}, and call the accept() - function to accept the drop if appropriate. - - The rectangle supplied by the answerRect() function can be used to restrict - drops to certain parts of the widget. For example, we can check whether the - rectangle intersects with the geometry of a certain child widget and only - call \l{QDropEvent::acceptProposedAction()}{acceptProposedAction()} if that - is the case. - - Note that this class inherits most of its functionality from - QDropEvent. - - \sa QDragEnterEvent, QDragLeaveEvent, QDropEvent -*/ - -/*! - \class QDragLeaveEvent - \brief The QDragLeaveEvent class provides an event that is sent to a widget when a drag and drop action leaves it. - - \ingroup events - \ingroup draganddrop - - This event is always preceded by a QDragEnterEvent and a series - of \l{QDragMoveEvent}s. It is not sent if a QDropEvent is sent - instead. - - \sa QDragEnterEvent, QDragMoveEvent, QDropEvent -*/ - -/*! - Constructs a QDragLeaveEvent. - - \warning Do not create a QDragLeaveEvent yourself since these - objects rely on Qt's internal state. -*/ -QDragLeaveEvent::QDragLeaveEvent() - : QEvent(DragLeave) -{} - -/*! \internal -*/ -QDragLeaveEvent::~QDragLeaveEvent() -{ -} -#endif // QT_NO_DRAGANDDROP - -/*! - \class QHelpEvent - \brief The QHelpEvent class provides an event that is used to request helpful information - about a particular point in a widget. - - \ingroup events - \ingroup helpsystem - - This event can be intercepted in applications to provide tooltips - or "What's This?" help for custom widgets. The type() can be - either QEvent::ToolTip or QEvent::WhatsThis. - - \sa QToolTip, QWhatsThis, QStatusTipEvent, QWhatsThisClickedEvent -*/ - -/*! - Constructs a help event with the given \a type corresponding to the - widget-relative position specified by \a pos and the global position - specified by \a globalPos. - - \a type must be either QEvent::ToolTip or QEvent::WhatsThis. - - \sa pos(), globalPos() -*/ -QHelpEvent::QHelpEvent(Type type, const QPoint &pos, const QPoint &globalPos) - : QEvent(type), p(pos), gp(globalPos) -{} - -/*! - \fn int QHelpEvent::x() const - - Same as pos().x(). - - \sa y(), pos(), globalPos() -*/ - -/*! - \fn int QHelpEvent::y() const - - Same as pos().y(). - - \sa x(), pos(), globalPos() -*/ - -/*! - \fn int QHelpEvent::globalX() const - - Same as globalPos().x(). - - \sa x(), globalY(), globalPos() -*/ - -/*! - \fn int QHelpEvent::globalY() const - - Same as globalPos().y(). - - \sa y(), globalX(), globalPos() -*/ - -/*! - \fn const QPoint &QHelpEvent::pos() const - - Returns the mouse cursor position when the event was generated, - relative to the widget to which the event is dispatched. - - \sa globalPos(), x(), y() -*/ - -/*! - \fn const QPoint &QHelpEvent::globalPos() const - - Returns the mouse cursor position when the event was generated - in global coordinates. - - \sa pos(), globalX(), globalY() -*/ - -/*! \internal -*/ -QHelpEvent::~QHelpEvent() -{ -} - -#ifndef QT_NO_STATUSTIP - -/*! - \class QStatusTipEvent - \brief The QStatusTipEvent class provides an event that is used to show messages in a status bar. - - \ingroup events - \ingroup helpsystem - - Status tips can be set on a widget using the - QWidget::setStatusTip() function. They are shown in the status - bar when the mouse cursor enters the widget. For example: - - \table 100% - \row - \o - \snippet doc/src/snippets/qstatustipevent/main.cpp 1 - \dots - \snippet doc/src/snippets/qstatustipevent/main.cpp 3 - \o - \image qstatustipevent-widget.png Widget with status tip. - \endtable - - Status tips can also be set on actions using the - QAction::setStatusTip() function: - - \table 100% - \row - \o - \snippet doc/src/snippets/qstatustipevent/main.cpp 0 - \snippet doc/src/snippets/qstatustipevent/main.cpp 2 - \dots - \snippet doc/src/snippets/qstatustipevent/main.cpp 3 - \o - \image qstatustipevent-action.png Action with status tip. - \endtable - - Finally, status tips are supported for the item view classes - through the Qt::StatusTipRole enum value. - - \sa QStatusBar, QHelpEvent, QWhatsThisClickedEvent -*/ - -/*! - Constructs a status tip event with the text specified by \a tip. - - \sa tip() -*/ -QStatusTipEvent::QStatusTipEvent(const QString &tip) - : QEvent(StatusTip), s(tip) -{} - -/*! \internal -*/ -QStatusTipEvent::~QStatusTipEvent() -{ -} - -/*! - \fn QString QStatusTipEvent::tip() const - - Returns the message to show in the status bar. - - \sa QStatusBar::showMessage() -*/ - -#endif // QT_NO_STATUSTIP - -#ifndef QT_NO_WHATSTHIS - -/*! - \class QWhatsThisClickedEvent - \brief The QWhatsThisClickedEvent class provides an event that - can be used to handle hyperlinks in a "What's This?" text. - - \ingroup events - \ingroup helpsystem - - \sa QWhatsThis, QHelpEvent, QStatusTipEvent -*/ - -/*! - Constructs an event containing a URL specified by \a href when a link - is clicked in a "What's This?" message. - - \sa href() -*/ -QWhatsThisClickedEvent::QWhatsThisClickedEvent(const QString &href) - : QEvent(WhatsThisClicked), s(href) -{} - -/*! \internal -*/ -QWhatsThisClickedEvent::~QWhatsThisClickedEvent() -{ -} - -/*! - \fn QString QWhatsThisClickedEvent::href() const - - Returns the URL that was clicked by the user in the "What's - This?" text. -*/ - -#endif // QT_NO_WHATSTHIS - -#ifndef QT_NO_ACTION - -/*! - \class QActionEvent - \brief The QActionEvent class provides an event that is generated - when a QAction is added, removed, or changed. - - \ingroup events - - Actions can be added to widgets using QWidget::addAction(). This - generates an \l ActionAdded event, which you can handle to provide - custom behavior. For example, QToolBar reimplements - QWidget::actionEvent() to create \l{QToolButton}s for the - actions. - - \sa QAction, QWidget::addAction(), QWidget::removeAction(), QWidget::actions() -*/ - -/*! - Constructs an action event. The \a type can be \l ActionChanged, - \l ActionAdded, or \l ActionRemoved. - - \a action is the action that is changed, added, or removed. If \a - type is ActionAdded, the action is to be inserted before the - action \a before. If \a before is 0, the action is appended. -*/ -QActionEvent::QActionEvent(int type, QAction *action, QAction *before) - : QEvent(static_cast<QEvent::Type>(type)), act(action), bef(before) -{} - -/*! \internal -*/ -QActionEvent::~QActionEvent() -{ -} - -/*! - \fn QAction *QActionEvent::action() const - - Returns the action that is changed, added, or removed. - - \sa before() -*/ - -/*! - \fn QAction *QActionEvent::before() const - - If type() is \l ActionAdded, returns the action that should - appear before action(). If this function returns 0, the action - should be appended to already existing actions on the same - widget. - - \sa action(), QWidget::actions() -*/ - -#endif // QT_NO_ACTION - -/*! - \class QHideEvent - \brief The QHideEvent class provides an event which is sent after a widget is hidden. - - \ingroup events - - This event is sent just before QWidget::hide() returns, and also - when a top-level window has been hidden (iconified) by the user. - - If spontaneous() is true, the event originated outside the - application. In this case, the user hid the window using the - window manager controls, either by iconifying the window or by - switching to another virtual desktop where the window isn't - visible. The window will become hidden but not withdrawn. If the - window was iconified, QWidget::isMinimized() returns true. - - \sa QShowEvent -*/ - -/*! - Constructs a QHideEvent. -*/ -QHideEvent::QHideEvent() - : QEvent(Hide) -{} - -/*! \internal -*/ -QHideEvent::~QHideEvent() -{ -} - -/*! - \class QShowEvent - \brief The QShowEvent class provides an event that is sent when a widget is shown. - - \ingroup events - - There are two kinds of show events: show events caused by the - window system (spontaneous), and internal show events. Spontaneous (QEvent::spontaneous()) - show events are sent just after the window system shows the - window; they are also sent when a top-level window is redisplayed - after being iconified. Internal show events are delivered just - before the widget becomes visible. - - \sa QHideEvent -*/ - -/*! - Constructs a QShowEvent. -*/ -QShowEvent::QShowEvent() - : QEvent(Show) -{} - -/*! \internal -*/ -QShowEvent::~QShowEvent() -{ -} - -/*! - \fn QByteArray QDropEvent::data(const char* f) const - - \obsolete - - The encoded data is in \a f. - Use QDropEvent::encodedData(). -*/ - -/*! - \class QFileOpenEvent - \brief The QFileOpenEvent class provides an event that will be - sent when there is a request to open a file or a URL. - - \ingroup events - - File open events will be sent to the QApplication::instance() - when the operating system requests that a file or URL should be opened. - This is a high-level event that can be caused by different user actions - depending on the user's desktop environment; for example, double - clicking on an file icon in the Finder on Mac OS X. - - This event is only used to notify the application of a request. - It may be safely ignored. - - \note This class is currently supported for Mac OS X and Symbian only. -*/ - -QFileOpenEventPrivate::~QFileOpenEventPrivate() -{ -#ifdef Q_OS_SYMBIAN - file.Close(); -#endif -} - -/*! - \internal - - Constructs a file open event for the given \a file. -*/ -QFileOpenEvent::QFileOpenEvent(const QString &file) - : QEvent(FileOpen), f(file) -{ - d = reinterpret_cast<QEventPrivate *>(new QFileOpenEventPrivate(QUrl::fromLocalFile(file))); -} - -/*! - \internal - - Constructs a file open event for the given \a url. -*/ -QFileOpenEvent::QFileOpenEvent(const QUrl &url) - : QEvent(FileOpen) -{ - d = reinterpret_cast<QEventPrivate *>(new QFileOpenEventPrivate(url)); - f = url.toLocalFile(); -} - -#ifdef Q_OS_SYMBIAN -/*! \internal -*/ -QFileOpenEvent::QFileOpenEvent(const RFile &fileHandle) - : QEvent(FileOpen) -{ - TFileName fullName; - fileHandle.FullName(fullName); - f = qt_TDesC2QString(fullName); - QScopedPointer<QFileOpenEventPrivate> priv(new QFileOpenEventPrivate(QUrl::fromLocalFile(f))); - // Duplicate here allows the file handle to be valid after S60 app construction is complete. - qt_symbian_throwIfError(priv->file.Duplicate(fileHandle)); - d = reinterpret_cast<QEventPrivate *>(priv.take()); -} -#endif - -/*! \internal -*/ -QFileOpenEvent::~QFileOpenEvent() -{ - delete reinterpret_cast<QFileOpenEventPrivate *>(d); -} - -/*! - \fn QString QFileOpenEvent::file() const - - Returns the file that is being opened. -*/ - -/*! - \fn QUrl QFileOpenEvent::url() const - - Returns the url that is being opened. - - \since 4.6 -*/ -QUrl QFileOpenEvent::url() const -{ - return reinterpret_cast<const QFileOpenEventPrivate *>(d)->url; -} - -/*! - \fn bool openFile(QFile &file, QIODevice::OpenMode flags) const - - Opens a QFile on the file referenced by this event. - Returns true if successful; otherwise returns false. - - This is necessary as some files cannot be opened by name, but require specific - information stored in this event. - For example, if this QFileOpenEvent contains a request to open a Symbian data caged file, - the QFile could only be opened from the Symbian RFile used in the construction of this event. - - \since 4.8 -*/ -bool QFileOpenEvent::openFile(QFile &file, QIODevice::OpenMode flags) const -{ - file.setFileName(f); -#ifdef Q_OS_SYMBIAN - const QFileOpenEventPrivate *priv = reinterpret_cast<const QFileOpenEventPrivate *>(d); - if (priv->file.SubSessionHandle()) { - RFile dup; - // Duplicate here means that the opened QFile will continue to be valid beyond the lifetime of this QFileOpenEvent. - // It also allows openFile to be used in threads other than the thread in which the QFileOpenEvent was created. - if (dup.Duplicate(priv->file) == KErrNone) { - QScopedPointer<RFile, QScopedPointerRCloser<RFile> > dupCloser(&dup); - bool open = file.open(dup, flags, QFile::AutoCloseHandle); - dupCloser.take(); - return open; - } - } -#endif - return file.open(flags); -} - -#ifndef QT_NO_TOOLBAR -/*! - \internal - \class QToolBarChangeEvent - \brief The QToolBarChangeEvent class provides an event that is - sent whenever a the toolbar button is clicked on Mac OS X. - - \ingroup events - - The QToolBarChangeEvent is sent when the toolbar button is clicked. On Mac - OS X, this is the long oblong button on the right side of the window - title bar. The default implementation is to toggle the appearance (hidden or - shown) of the associated toolbars for the window. -*/ - -/*! - \internal - - Construct a QToolBarChangeEvent given the current button state in \a state. -*/ -QToolBarChangeEvent::QToolBarChangeEvent(bool t) - : QEvent(ToolBarChange), tog(t) -{} - -/*! \internal -*/ -QToolBarChangeEvent::~QToolBarChangeEvent() -{ -} - -/*! - \fn bool QToolBarChangeEvent::toggle() const - \internal -*/ - -/* - \fn Qt::ButtonState QToolBarChangeEvent::state() const - - Returns the keyboard modifier flags at the time of the event. - - The returned value is a selection of the following values, - combined using the OR operator: - Qt::ShiftButton, Qt::ControlButton, Qt::MetaButton, and Qt::AltButton. -*/ - -#endif // QT_NO_TOOLBAR - -#ifndef QT_NO_SHORTCUT - -/*! - Constructs a shortcut event for the given \a key press, - associated with the QShortcut ID \a id. - - \a ambiguous specifies whether there is more than one QShortcut - for the same key sequence. -*/ -QShortcutEvent::QShortcutEvent(const QKeySequence &key, int id, bool ambiguous) - : QEvent(Shortcut), sequence(key), ambig(ambiguous), sid(id) -{ -} - -/*! - Destroys the event object. -*/ -QShortcutEvent::~QShortcutEvent() -{ -} - -#endif // QT_NO_SHORTCUT - -#ifndef QT_NO_DEBUG_STREAM -QDebug operator<<(QDebug dbg, const QEvent *e) { -#ifndef Q_BROKEN_DEBUG_STREAM - // More useful event output could be added here - if (!e) - return dbg << "QEvent(this = 0x0)"; - const char *n = 0; - switch (e->type()) { - case QEvent::Timer: - n = "Timer"; - break; - case QEvent::MouseButtonPress: - case QEvent::MouseMove: - case QEvent::MouseButtonRelease: - case QEvent::MouseButtonDblClick: - { - const QMouseEvent *me = static_cast<const QMouseEvent*>(e); - switch(me->type()) { - case QEvent::MouseButtonPress: - n = "MouseButtonPress"; - break; - case QEvent::MouseMove: - n = "MouseMove"; - break; - case QEvent::MouseButtonRelease: - n = "MouseButtonRelease"; - break; - case QEvent::MouseButtonDblClick: - default: - n = "MouseButtonDblClick"; - break; - } - dbg.nospace() << "QMouseEvent(" << n - << ", " << me->button() - << ", " << hex << (int)me->buttons() - << ", " << hex << (int)me->modifiers() - << ')'; - } - return dbg.space(); - -#ifndef QT_NO_TOOLTIP - case QEvent::ToolTip: - n = "ToolTip"; - break; -#endif - case QEvent::WindowActivate: - n = "WindowActivate"; - break; - case QEvent::WindowDeactivate: - n = "WindowDeactivate"; - break; - case QEvent::ActivationChange: - n = "ActivationChange"; - break; -#ifndef QT_NO_WHEELEVENT - case QEvent::Wheel: - dbg.nospace() << "QWheelEvent(" << static_cast<const QWheelEvent *>(e)->delta() - << ')'; - return dbg.space(); -#endif - case QEvent::KeyPress: - case QEvent::KeyRelease: - case QEvent::ShortcutOverride: - { - const QKeyEvent *ke = static_cast<const QKeyEvent*>(e); - switch(ke->type()) { - case QEvent::ShortcutOverride: - n = "ShortcutOverride"; - break; - case QEvent::KeyRelease: - n = "KeyRelease"; - break; - case QEvent::KeyPress: - default: - n = "KeyPress"; - break; - } - dbg.nospace() << "QKeyEvent(" << n - << ", " << hex << ke->key() - << ", " << hex << (int)ke->modifiers() - << ", \"" << ke->text() - << "\", " << ke->isAutoRepeat() - << ", " << ke->count() - << ')'; - } - return dbg.space(); - case QEvent::FocusIn: - n = "FocusIn"; - break; - case QEvent::FocusOut: - n = "FocusOut"; - break; - case QEvent::Enter: - n = "Enter"; - break; - case QEvent::Leave: - n = "Leave"; - break; - case QEvent::PaletteChange: - n = "PaletteChange"; - break; - case QEvent::PolishRequest: - n = "PolishRequest"; - break; - case QEvent::Polish: - n = "Polish"; - break; - case QEvent::UpdateRequest: - n = "UpdateRequest"; - break; - case QEvent::Paint: - n = "Paint"; - break; - case QEvent::Move: - n = "Move"; - break; - case QEvent::Resize: - n = "Resize"; - break; - case QEvent::Create: - n = "Create"; - break; - case QEvent::Destroy: - n = "Destroy"; - break; - case QEvent::Close: - n = "Close"; - break; - case QEvent::Quit: - n = "Quit"; - break; - case QEvent::FileOpen: - n = "FileOpen"; - break; - case QEvent::Show: - n = "Show"; - break; - case QEvent::ShowToParent: - n = "ShowToParent"; - break; - case QEvent::Hide: - n = "Hide"; - break; - case QEvent::HideToParent: - n = "HideToParent"; - break; - case QEvent::None: - n = "None"; - break; - case QEvent::ParentChange: - n = "ParentChange"; - break; - case QEvent::ParentAboutToChange: - n = "ParentAboutToChange"; - break; - case QEvent::HoverEnter: - n = "HoverEnter"; - break; - case QEvent::HoverMove: - n = "HoverMove"; - break; - case QEvent::HoverLeave: - n = "HoverLeave"; - break; - case QEvent::ZOrderChange: - n = "ZOrderChange"; - break; - case QEvent::StyleChange: - n = "StyleChange"; - break; - case QEvent::DragEnter: - n = "DragEnter"; - break; - case QEvent::DragMove: - n = "DragMove"; - break; - case QEvent::DragLeave: - n = "DragLeave"; - break; - case QEvent::Drop: - n = "Drop"; - break; - case QEvent::GraphicsSceneMouseMove: - n = "GraphicsSceneMouseMove"; - break; - case QEvent::GraphicsSceneMousePress: - n = "GraphicsSceneMousePress"; - break; - case QEvent::GraphicsSceneMouseRelease: - n = "GraphicsSceneMouseRelease"; - break; - case QEvent::GraphicsSceneMouseDoubleClick: - n = "GraphicsSceneMouseDoubleClick"; - break; - case QEvent::GraphicsSceneContextMenu: - n = "GraphicsSceneContextMenu"; - break; - case QEvent::GraphicsSceneHoverEnter: - n = "GraphicsSceneHoverEnter"; - break; - case QEvent::GraphicsSceneHoverMove: - n = "GraphicsSceneHoverMove"; - break; - case QEvent::GraphicsSceneHoverLeave: - n = "GraphicsSceneHoverLeave"; - break; - case QEvent::GraphicsSceneHelp: - n = "GraphicsSceneHelp"; - break; - case QEvent::GraphicsSceneDragEnter: - n = "GraphicsSceneDragEnter"; - break; - case QEvent::GraphicsSceneDragMove: - n = "GraphicsSceneDragMove"; - break; - case QEvent::GraphicsSceneDragLeave: - n = "GraphicsSceneDragLeave"; - break; - case QEvent::GraphicsSceneDrop: - n = "GraphicsSceneDrop"; - break; - case QEvent::GraphicsSceneWheel: - n = "GraphicsSceneWheel"; - break; - case QEvent::GraphicsSceneResize: - n = "GraphicsSceneResize"; - break; - case QEvent::GraphicsSceneMove: - n = "GraphicsSceneMove"; - break; - case QEvent::CursorChange: - n = "CursorChange"; - break; - case QEvent::ToolTipChange: - n = "ToolTipChange"; - break; - case QEvent::StatusTip: - n = "StatusTip"; - break; - case QEvent::WhatsThis: - n = "WhatsThis"; - break; - case QEvent::FontChange: - n = "FontChange"; - break; - case QEvent::Style: - n = "Style"; - break; - case QEvent::KeyboardLayoutChange: - n = "KeyboardLayoutChange"; - break; - case QEvent::DynamicPropertyChange: - n = "DynamicPropertyChange"; - break; - case QEvent::GrabMouse: - n = "GrabMouse"; - break; - case QEvent::UngrabMouse: - n = "UngrabMouse"; - break; - case QEvent::GrabKeyboard: - n = "GrabKeyboard"; - break; - case QEvent::UngrabKeyboard: - n = "UngrabKeyboard"; - break; - case QEvent::ChildAdded: n = n ? n : "ChildAdded"; - case QEvent::ChildPolished: n = n ? n : "ChildPolished"; - case QEvent::ChildRemoved: n = n ? n : "ChildRemoved"; - dbg.nospace() << "QChildEvent(" << n << ", " << (static_cast<const QChildEvent*>(e))->child(); - return dbg.space(); -#ifndef QT_NO_GESTURES - case QEvent::Gesture: - n = "Gesture"; - break; -#endif - default: - dbg.nospace() << "QEvent(" << (const void *)e << ", type = " << e->type() << ')'; - return dbg.space(); - } - - dbg.nospace() << 'Q' << n << "Event(" << (const void *)e << ')'; - return dbg.space(); -#else - qWarning("This compiler doesn't support streaming QEvent to QDebug"); - return dbg; - Q_UNUSED(e); -#endif -} -#endif - -#ifndef QT_NO_CLIPBOARD -/*! - \class QClipboardEvent - \ingroup events - \internal - - \brief The QClipboardEvent class provides the parameters used in a clipboard event. - - This class is for internal use only, and exists to aid the clipboard on various - platforms to get all the information it needs. Use QEvent::Clipboard instead. - - \sa QClipboard -*/ - -QClipboardEvent::QClipboardEvent(QEventPrivate *data) - : QEvent(QEvent::Clipboard) -{ - d = data; -} - -QClipboardEvent::~QClipboardEvent() -{ -} -#endif // QT_NO_CLIPBOARD - -/*! - \class QShortcutEvent - \brief The QShortcutEvent class provides an event which is generated when - the user presses a key combination. - - \ingroup events - - Normally you don't need to use this class directly; QShortcut - provides a higher-level interface to handle shortcut keys. - - \sa QShortcut -*/ - -/*! - \fn const QKeySequence &QShortcutEvent::key() const - - Returns the key sequence that triggered the event. -*/ - -// ### Qt 5: remove -/*! - \fn const QKeySequence &QShortcutEvent::key() - - \internal -*/ - -/*! - \fn int QShortcutEvent::shortcutId() const - - Returns the ID of the QShortcut object for which this event was - generated. - - \sa QShortcut::id() -*/ - -// ### Qt 5: remove -/*! - \fn int QShortcutEvent::shortcutId() - \overload - - \internal -*/ - -/*! - \fn bool QShortcutEvent::isAmbiguous() const - - Returns true if the key sequence that triggered the event is - ambiguous. - - \sa QShortcut::activatedAmbiguously() -*/ - -// ### Qt 5: remove -/*! - \fn bool QShortcutEvent::isAmbiguous() - - \internal -*/ - -/*! - \class QWindowStateChangeEvent - \ingroup events - - \brief The QWindowStateChangeEvent class provides the window state before a - window state change. -*/ - -/*! \fn Qt::WindowStates QWindowStateChangeEvent::oldState() const - - Returns the state of the window before the change. -*/ - -/*! \internal - */ -QWindowStateChangeEvent::QWindowStateChangeEvent(Qt::WindowStates s) - : QEvent(WindowStateChange), ostate(s) -{ -} - -/*! \internal - */ -QWindowStateChangeEvent::QWindowStateChangeEvent(Qt::WindowStates s, bool isOverride) - : QEvent(WindowStateChange), ostate(s) -{ - if (isOverride) - d = (QEventPrivate*)(this); -} - -/*! \internal - */ -bool QWindowStateChangeEvent::isOverride() const -{ - return (d != 0); -} - -/*! \internal -*/ -QWindowStateChangeEvent::~QWindowStateChangeEvent() -{ -} - - -/*! - \class QTouchEvent - \brief The QTouchEvent class contains parameters that describe a touch event. - \since 4.6 - \ingroup events - \ingroup touch - - \section1 Enabling Touch Events - - Touch events occur when pressing, releasing, or moving one or more touch points on a touch - device (such as a touch-screen or track-pad). To receive touch events, widgets have to have the - Qt::WA_AcceptTouchEvents attribute set and graphics items need to have the - \l{QGraphicsItem::setAcceptTouchEvents()}{acceptTouchEvents} attribute set to true. - - When using QAbstractScrollArea based widgets, you should enable the Qt::WA_AcceptTouchEvents - attribute on the scroll area's \l{QAbstractScrollArea::viewport()}{viewport}. - - Similarly to QMouseEvent, Qt automatically grabs each touch point on the first press inside a - widget, and the widget will receive all updates for the touch point until it is released. - Note that it is possible for a widget to receive events for numerous touch points, and that - multiple widgets may be receiving touch events at the same time. - - \section1 Event Handling - - All touch events are of type QEvent::TouchBegin, QEvent::TouchUpdate, or QEvent::TouchEnd. - Reimplement QWidget::event() or QAbstractScrollArea::viewportEvent() for widgets and - QGraphicsItem::sceneEvent() for items in a graphics view to receive touch events. - - The QEvent::TouchUpdate and QEvent::TouchEnd events are sent to the widget or item that - accepted the QEvent::TouchBegin event. If the QEvent::TouchBegin event is not accepted and not - filtered by an event filter, then no further touch events are sent until the next - QEvent::TouchBegin. - - The touchPoints() function returns a list of all touch points contained in the event. - Information about each touch point can be retrieved using the QTouchEvent::TouchPoint class. - The Qt::TouchPointState enum describes the different states that a touch point may have. - - \section1 Event Delivery and Propagation - - By default, QWidget::event() translates the first non-primary touch point in a QTouchEvent into - a QMouseEvent. This makes it possible to enable touch events on existing widgets that do not - normally handle QTouchEvent. See below for information on some special considerations needed - when doing this. - - QEvent::TouchBegin is the first touch event sent to a widget. The QEvent::TouchBegin event - contains a special accept flag that indicates whether the receiver wants the event. By default, - the event is accepted. You should call ignore() if the touch event is not handled by your - widget. The QEvent::TouchBegin event is propagated up the parent widget chain until a widget - accepts it with accept(), or an event filter consumes it. For QGraphicsItems, the - QEvent::TouchBegin event is propagated to items under the mouse (similar to mouse event - propagation for QGraphicsItems). - - \section1 Touch Point Grouping - - As mentioned above, it is possible that several widgets can be receiving QTouchEvents at the - same time. However, Qt makes sure to never send duplicate QEvent::TouchBegin events to the same - widget, which could theoretically happen during propagation if, for example, the user touched 2 - separate widgets in a QGroupBox and both widgets ignored the QEvent::TouchBegin event. - - To avoid this, Qt will group new touch points together using the following rules: - - \list - - \i When the first touch point is detected, the destination widget is determined firstly by the - location on screen and secondly by the propagation rules. - - \i When additional touch points are detected, Qt first looks to see if there are any active - touch points on any ancestor or descendent of the widget under the new touch point. If there - are, the new touch point is grouped with the first, and the new touch point will be sent in a - single QTouchEvent to the widget that handled the first touch point. (The widget under the new - touch point will not receive an event). - - \endlist - - This makes it possible for sibling widgets to handle touch events independently while making - sure that the sequence of QTouchEvents is always correct. - - \section1 Mouse Events and the Primary Touch Point - - QTouchEvent delivery is independent from that of QMouseEvent. On some windowing systems, mouse - events are also sent for the \l{QTouchEvent::TouchPoint::isPrimary()}{primary touch point}. - This means it is possible for your widget to receive both QTouchEvent and QMouseEvent for the - same user interaction point. You can use the QTouchEvent::TouchPoint::isPrimary() function to - identify the primary touch point. - - Note that on some systems, it is possible to receive touch events without a primary touch - point. All this means is that there will be no mouse event generated for the touch points in - the QTouchEvent. - - \section1 Caveats - - \list - - \i As mentioned above, enabling touch events means multiple widgets can be receiving touch - events simultaneously. Combined with the default QWidget::event() handling for QTouchEvents, - this gives you great flexibility in designing touch user interfaces. Be aware of the - implications. For example, it is possible that the user is moving a QSlider with one finger and - pressing a QPushButton with another. The signals emitted by these widgets will be - interleaved. - - \i Recursion into the event loop using one of the exec() methods (e.g., QDialog::exec() or - QMenu::exec()) in a QTouchEvent event handler is not supported. Since there are multiple event - recipients, recursion may cause problems, including but not limited to lost events - and unexpected infinite recursion. - - \i QTouchEvents are not affected by a \l{QWidget::grabMouse()}{mouse grab} or an - \l{QApplication::activePopupWidget()}{active pop-up widget}. The behavior of QTouchEvents is - undefined when opening a pop-up or grabbing the mouse while there are more than one active touch - points. - - \endlist - - \sa QTouchEvent::TouchPoint, Qt::TouchPointState, Qt::WA_AcceptTouchEvents, - QGraphicsItem::acceptTouchEvents() -*/ - -/*! \enum Qt::TouchPointState - \since 4.6 - - This enum represents the state of a touch point at the time the - QTouchEvent occurred. - - \value TouchPointPressed The touch point is now pressed. - \value TouchPointMoved The touch point moved. - \value TouchPointStationary The touch point did not move. - \value TouchPointReleased The touch point was released. - - \omitvalue TouchPointStateMask - \omitvalue TouchPointPrimary -*/ - -/*! \enum QTouchEvent::DeviceType - - This enum represents the type of device that generated a QTouchEvent. - - \value TouchScreen In this type of device, the touch surface and display are integrated. This - means the surface and display typically have the same size, such that there - is a direct relationship between the touch points' physical positions and the - coordinate reported by QTouchEvent::TouchPoint. As a result, Qt allows the - user to interact directly with multiple QWidgets and QGraphicsItems at the - same time. - - \value TouchPad In this type of device, the touch surface is separate from the display. There - is not a direct relationship between the physical touch location and the - on-screen coordinates. Instead, they are calculated relative to the current - mouse position, and the user must use the touch-pad to move this reference - point. Unlike touch-screens, Qt allows users to only interact with a single - QWidget or QGraphicsItem at a time. -*/ - -/*! - Constructs a QTouchEvent with the given \a eventType, \a deviceType, and \a touchPoints. - The \a touchPointStates and \a modifiers are the current touch point states and keyboard - modifiers at the time of the event. -*/ -QTouchEvent::QTouchEvent(QEvent::Type eventType, - QTouchEvent::DeviceType deviceType, - Qt::KeyboardModifiers modifiers, - Qt::TouchPointStates touchPointStates, - const QList<QTouchEvent::TouchPoint> &touchPoints) - : QInputEvent(eventType, modifiers), - _widget(0), - _deviceType(deviceType), - _touchPointStates(touchPointStates), - _touchPoints(touchPoints) -{ } - -/*! - Destroys the QTouchEvent. -*/ -QTouchEvent::~QTouchEvent() -{ } - -/*! \fn QWidget *QTouchEvent::widget() const - - Returns the widget on which the event occurred. -*/ - - -/*! \fn Qt::TouchPointStates QTouchEvent::touchPointStates() const - - Returns a bitwise OR of all the touch point states for this event. -*/ - -/*! \fn const QList<QTouchEvent::TouchPoint> &QTouchEvent::touchPoints() const - - Returns the list of touch points contained in the touch event. -*/ - -/*! \fn QTouchEvent::DeviceType QTouchEvent::deviceType() const - - Returns the touch device Type, which is of type \l {QTouchEvent::DeviceType} {DeviceType}. -*/ - -/*! \fn void QTouchEvent::setWidget(QWidget *widget) - - \internal - - Sets the widget for this event. -*/ - -/*! \fn void QTouchEvent::setTouchPointStates(Qt::TouchPointStates touchPointStates) - - \internal - - Sets a bitwise OR of all the touch point states for this event. -*/ - -/*! \fn void QTouchEvent::setTouchPoints(const QList<QTouchEvent::TouchPoint> &touchPoints) - - \internal - - Sets the list of touch points for this event. -*/ - -/*! \fn void QTouchEvent::setDeviceType(DeviceType deviceType) - - \internal - - Sets the device type to \a deviceType, which is of type \l {QTouchEvent::DeviceType} - {DeviceType}. -*/ - -/*! \class QTouchEvent::TouchPoint - \brief The TouchPoint class provides information about a touch point in a QTouchEvent. - \since 4.6 -*/ - -/*! \internal - - Constructs a QTouchEvent::TouchPoint for use in a QTouchEvent. -*/ -QTouchEvent::TouchPoint::TouchPoint(int id) - : d(new QTouchEventTouchPointPrivate(id)) -{ } - -/*! \internal - - Constructs a copy of \a other. -*/ -QTouchEvent::TouchPoint::TouchPoint(const QTouchEvent::TouchPoint &other) - : d(other.d) -{ - d->ref.ref(); -} - -/*! \internal - - Destroys the QTouchEvent::TouchPoint. -*/ -QTouchEvent::TouchPoint::~TouchPoint() -{ - if (!d->ref.deref()) - delete d; -} - -/*! - Returns the id number of this touch point. - - Id numbers are globally sequential, starting at zero, meaning the - first touch point in the application has id 0, the second has id 1, - and so on. -*/ -int QTouchEvent::TouchPoint::id() const -{ - return d->id; -} - -/*! - Returns the current state of this touch point. -*/ -Qt::TouchPointState QTouchEvent::TouchPoint::state() const -{ - return Qt::TouchPointState(int(d->state) & Qt::TouchPointStateMask); -} - -/*! - Returns true if this touch point is the primary touch point. The primary touch point is the - point for which the windowing system generates mouse events. -*/ -bool QTouchEvent::TouchPoint::isPrimary() const -{ - return (d->state & Qt::TouchPointPrimary) != 0; -} - -/*! - Returns the position of this touch point, relative to the widget - or QGraphicsItem that received the event. - - \sa startPos(), lastPos(), screenPos(), scenePos(), normalizedPos() -*/ -QPointF QTouchEvent::TouchPoint::pos() const -{ - return d->rect.center(); -} - -/*! - Returns the scene position of this touch point. - - The scene position is the position in QGraphicsScene coordinates - if the QTouchEvent is handled by a QGraphicsItem::touchEvent() - reimplementation, and identical to the screen position for - widgets. - - \sa startScenePos(), lastScenePos(), pos() -*/ -QPointF QTouchEvent::TouchPoint::scenePos() const -{ - return d->sceneRect.center(); -} - -/*! - Returns the screen position of this touch point. - - \sa startScreenPos(), lastScreenPos(), pos() -*/ -QPointF QTouchEvent::TouchPoint::screenPos() const -{ - return d->screenRect.center(); -} - -/*! - Returns the normalized position of this touch point. - - The coordinates are normalized to the size of the touch device, - i.e. (0,0) is the top-left corner and (1,1) is the bottom-right corner. - - \sa startNormalizedPos(), lastNormalizedPos(), pos() -*/ -QPointF QTouchEvent::TouchPoint::normalizedPos() const -{ - return d->normalizedPos; -} - -/*! - Returns the starting position of this touch point, relative to the - widget or QGraphicsItem that received the event. - - \sa pos(), lastPos() -*/ -QPointF QTouchEvent::TouchPoint::startPos() const -{ - return d->startPos; -} - -/*! - Returns the starting scene position of this touch point. - - The scene position is the position in QGraphicsScene coordinates - if the QTouchEvent is handled by a QGraphicsItem::touchEvent() - reimplementation, and identical to the screen position for - widgets. - - \sa scenePos(), lastScenePos() -*/ -QPointF QTouchEvent::TouchPoint::startScenePos() const -{ - return d->startScenePos; -} - -/*! - Returns the starting screen position of this touch point. - - \sa screenPos(), lastScreenPos() -*/ -QPointF QTouchEvent::TouchPoint::startScreenPos() const -{ - return d->startScreenPos; -} - -/*! - Returns the normalized starting position of this touch point. - - The coordinates are normalized to the size of the touch device, - i.e. (0,0) is the top-left corner and (1,1) is the bottom-right corner. - - \sa normalizedPos(), lastNormalizedPos() -*/ -QPointF QTouchEvent::TouchPoint::startNormalizedPos() const -{ - return d->startNormalizedPos; -} - -/*! - Returns the position of this touch point from the previous touch - event, relative to the widget or QGraphicsItem that received the event. - - \sa pos(), startPos() -*/ -QPointF QTouchEvent::TouchPoint::lastPos() const -{ - return d->lastPos; -} - -/*! - Returns the scene position of this touch point from the previous - touch event. - - The scene position is the position in QGraphicsScene coordinates - if the QTouchEvent is handled by a QGraphicsItem::touchEvent() - reimplementation, and identical to the screen position for - widgets. - - \sa scenePos(), startScenePos() -*/ -QPointF QTouchEvent::TouchPoint::lastScenePos() const -{ - return d->lastScenePos; -} - -/*! - Returns the screen position of this touch point from the previous - touch event. - - \sa screenPos(), startScreenPos() -*/ -QPointF QTouchEvent::TouchPoint::lastScreenPos() const -{ - return d->lastScreenPos; -} - -/*! - Returns the normalized position of this touch point from the - previous touch event. - - The coordinates are normalized to the size of the touch device, - i.e. (0,0) is the top-left corner and (1,1) is the bottom-right corner. - - \sa normalizedPos(), startNormalizedPos() -*/ -QPointF QTouchEvent::TouchPoint::lastNormalizedPos() const -{ - return d->lastNormalizedPos; -} - -/*! - Returns the rect for this touch point, relative to the widget - or QGraphicsItem that received the event. The rect is centered - around the point returned by pos(). - - \note This function returns an empty rect if the device does not report touch point sizes. -*/ -QRectF QTouchEvent::TouchPoint::rect() const -{ - return d->rect; -} - -/*! - Returns the rect for this touch point in scene coordinates. - - \note This function returns an empty rect if the device does not report touch point sizes. - - \sa scenePos(), rect() -*/ -QRectF QTouchEvent::TouchPoint::sceneRect() const -{ - return d->sceneRect; -} - -/*! - Returns the rect for this touch point in screen coordinates. - - \note This function returns an empty rect if the device does not report touch point sizes. - - \sa screenPos(), rect() -*/ -QRectF QTouchEvent::TouchPoint::screenRect() const -{ - return d->screenRect; -} - -/*! - Returns the pressure of this touch point. The return value is in - the range 0.0 to 1.0. -*/ -qreal QTouchEvent::TouchPoint::pressure() const -{ - return d->pressure; -} - -/*! \internal */ -void QTouchEvent::TouchPoint::setId(int id) -{ - if (d->ref != 1) - d = d->detach(); - d->id = id; -} - -/*! \internal */ -void QTouchEvent::TouchPoint::setState(Qt::TouchPointStates state) -{ - if (d->ref != 1) - d = d->detach(); - d->state = state; -} - -/*! \internal */ -void QTouchEvent::TouchPoint::setPos(const QPointF &pos) -{ - if (d->ref != 1) - d = d->detach(); - d->rect.moveCenter(pos); -} - -/*! \internal */ -void QTouchEvent::TouchPoint::setScenePos(const QPointF &scenePos) -{ - if (d->ref != 1) - d = d->detach(); - d->sceneRect.moveCenter(scenePos); -} - -/*! \internal */ -void QTouchEvent::TouchPoint::setScreenPos(const QPointF &screenPos) -{ - if (d->ref != 1) - d = d->detach(); - d->screenRect.moveCenter(screenPos); -} - -/*! \internal */ -void QTouchEvent::TouchPoint::setNormalizedPos(const QPointF &normalizedPos) -{ - if (d->ref != 1) - d = d->detach(); - d->normalizedPos = normalizedPos; -} - -/*! \internal */ -void QTouchEvent::TouchPoint::setStartPos(const QPointF &startPos) -{ - if (d->ref != 1) - d = d->detach(); - d->startPos = startPos; -} - -/*! \internal */ -void QTouchEvent::TouchPoint::setStartScenePos(const QPointF &startScenePos) -{ - if (d->ref != 1) - d = d->detach(); - d->startScenePos = startScenePos; -} - -/*! \internal */ -void QTouchEvent::TouchPoint::setStartScreenPos(const QPointF &startScreenPos) -{ - if (d->ref != 1) - d = d->detach(); - d->startScreenPos = startScreenPos; -} - -/*! \internal */ -void QTouchEvent::TouchPoint::setStartNormalizedPos(const QPointF &startNormalizedPos) -{ - if (d->ref != 1) - d = d->detach(); - d->startNormalizedPos = startNormalizedPos; -} - -/*! \internal */ -void QTouchEvent::TouchPoint::setLastPos(const QPointF &lastPos) -{ - if (d->ref != 1) - d = d->detach(); - d->lastPos = lastPos; -} - -/*! \internal */ -void QTouchEvent::TouchPoint::setLastScenePos(const QPointF &lastScenePos) -{ - if (d->ref != 1) - d = d->detach(); - d->lastScenePos = lastScenePos; -} - -/*! \internal */ -void QTouchEvent::TouchPoint::setLastScreenPos(const QPointF &lastScreenPos) -{ - if (d->ref != 1) - d = d->detach(); - d->lastScreenPos = lastScreenPos; -} - -/*! \internal */ -void QTouchEvent::TouchPoint::setLastNormalizedPos(const QPointF &lastNormalizedPos) -{ - if (d->ref != 1) - d = d->detach(); - d->lastNormalizedPos = lastNormalizedPos; -} - -/*! \internal */ -void QTouchEvent::TouchPoint::setRect(const QRectF &rect) -{ - if (d->ref != 1) - d = d->detach(); - d->rect = rect; -} - -/*! \internal */ -void QTouchEvent::TouchPoint::setSceneRect(const QRectF &sceneRect) -{ - if (d->ref != 1) - d = d->detach(); - d->sceneRect = sceneRect; -} - -/*! \internal */ -void QTouchEvent::TouchPoint::setScreenRect(const QRectF &screenRect) -{ - if (d->ref != 1) - d = d->detach(); - d->screenRect = screenRect; -} - -/*! \internal */ -void QTouchEvent::TouchPoint::setPressure(qreal pressure) -{ - if (d->ref != 1) - d = d->detach(); - d->pressure = pressure; -} - -/*! \internal */ -QTouchEvent::TouchPoint &QTouchEvent::TouchPoint::operator=(const QTouchEvent::TouchPoint &other) -{ - other.d->ref.ref(); - if (!d->ref.deref()) - delete d; - d = other.d; - return *this; -} - -#ifndef QT_NO_GESTURES -/*! - \class QGestureEvent - \since 4.6 - \ingroup events - \ingroup gestures - - \brief The QGestureEvent class provides the description of triggered gestures. - - The QGestureEvent class contains a list of gestures, which can be obtained using the - gestures() function. - - The gestures are either active or canceled. A list of those that are currently being - executed can be obtained using the activeGestures() function. A list of those which - were previously active and have been canceled can be accessed using the - canceledGestures() function. A gesture might be canceled if the current window loses - focus, for example, or because of a timeout, or for other reasons. - - If the event handler does not accept the event by calling the generic - QEvent::accept() function, all individual QGesture object that were not - accepted and in the Qt::GestureStarted state will be propagated up the - parent widget chain until a widget accepts them individually, by calling - QGestureEvent::accept() for each of them, or an event filter consumes the - event. - - \section1 Further Reading - - For an overview of gesture handling in Qt and information on using gestures - in your applications, see the \l{Gestures Programming} document. - - \sa QGesture, QGestureRecognizer, - QWidget::grabGesture(), QGraphicsObject::grabGesture() -*/ - -/*! - Creates new QGestureEvent containing a list of \a gestures. -*/ -QGestureEvent::QGestureEvent(const QList<QGesture *> &gestures) - : QEvent(QEvent::Gesture) -{ - d = reinterpret_cast<QEventPrivate *>(new QGestureEventPrivate(gestures)); -} - -/*! - Destroys QGestureEvent. -*/ -QGestureEvent::~QGestureEvent() -{ - delete reinterpret_cast<QGestureEventPrivate *>(d); -} - -/*! - Returns all gestures that are delivered in the event. -*/ -QList<QGesture *> QGestureEvent::gestures() const -{ - return d_func()->gestures; -} - -/*! - Returns a gesture object by \a type. -*/ -QGesture *QGestureEvent::gesture(Qt::GestureType type) const -{ - const QGestureEventPrivate *d = d_func(); - for(int i = 0; i < d->gestures.size(); ++i) - if (d->gestures.at(i)->gestureType() == type) - return d->gestures.at(i); - return 0; -} - -/*! - Returns a list of active (not canceled) gestures. -*/ -QList<QGesture *> QGestureEvent::activeGestures() const -{ - QList<QGesture *> gestures; - foreach (QGesture *gesture, d_func()->gestures) { - if (gesture->state() != Qt::GestureCanceled) - gestures.append(gesture); - } - return gestures; -} - -/*! - Returns a list of canceled gestures. -*/ -QList<QGesture *> QGestureEvent::canceledGestures() const -{ - QList<QGesture *> gestures; - foreach (QGesture *gesture, d_func()->gestures) { - if (gesture->state() == Qt::GestureCanceled) - gestures.append(gesture); - } - return gestures; -} - -/*! - Sets the accept flag of the given \a gesture object to the specified \a value. - - Setting the accept flag indicates that the event receiver wants the \a gesture. - Unwanted gestures may be propagated to the parent widget. - - By default, gestures in events of type QEvent::Gesture are accepted, and - gestures in QEvent::GestureOverride events are ignored. - - For convenience, the accept flag can also be set with - \l{QGestureEvent::accept()}{accept(gesture)}, and cleared with - \l{QGestureEvent::ignore()}{ignore(gesture)}. -*/ -void QGestureEvent::setAccepted(QGesture *gesture, bool value) -{ - if (gesture) - setAccepted(gesture->gestureType(), value); -} - -/*! - Sets the accept flag of the given \a gesture object, the equivalent of calling - \l{QGestureEvent::setAccepted()}{setAccepted(gesture, true)}. - - Setting the accept flag indicates that the event receiver wants the - gesture. Unwanted gestures may be propagated to the parent widget. - - \sa QGestureEvent::ignore() -*/ -void QGestureEvent::accept(QGesture *gesture) -{ - if (gesture) - setAccepted(gesture->gestureType(), true); -} - -/*! - Clears the accept flag parameter of the given \a gesture object, the equivalent - of calling \l{QGestureEvent::setAccepted()}{setAccepted(gesture, false)}. - - Clearing the accept flag indicates that the event receiver does not - want the gesture. Unwanted gestures may be propagated to the parent widget. - - \sa QGestureEvent::accept() -*/ -void QGestureEvent::ignore(QGesture *gesture) -{ - if (gesture) - setAccepted(gesture->gestureType(), false); -} - -/*! - Returns true if the \a gesture is accepted; otherwise returns false. -*/ -bool QGestureEvent::isAccepted(QGesture *gesture) const -{ - return gesture ? isAccepted(gesture->gestureType()) : false; -} - -/*! - Sets the accept flag of the given \a gestureType object to the specified - \a value. - - Setting the accept flag indicates that the event receiver wants to receive - gestures of the specified type, \a gestureType. Unwanted gestures may be - propagated to the parent widget. - - By default, gestures in events of type QEvent::Gesture are accepted, and - gestures in QEvent::GestureOverride events are ignored. - - For convenience, the accept flag can also be set with - \l{QGestureEvent::accept()}{accept(gestureType)}, and cleared with - \l{QGestureEvent::ignore()}{ignore(gestureType)}. -*/ -void QGestureEvent::setAccepted(Qt::GestureType gestureType, bool value) -{ - setAccepted(false); - d_func()->accepted[gestureType] = value; -} - -/*! - Sets the accept flag of the given \a gestureType, the equivalent of calling - \l{QGestureEvent::setAccepted()}{setAccepted(gestureType, true)}. - - Setting the accept flag indicates that the event receiver wants the - gesture. Unwanted gestures may be propagated to the parent widget. - - \sa QGestureEvent::ignore() -*/ -void QGestureEvent::accept(Qt::GestureType gestureType) -{ - setAccepted(gestureType, true); -} - -/*! - Clears the accept flag parameter of the given \a gestureType, the equivalent - of calling \l{QGestureEvent::setAccepted()}{setAccepted(gesture, false)}. - - Clearing the accept flag indicates that the event receiver does not - want the gesture. Unwanted gestures may be propgated to the parent widget. - - \sa QGestureEvent::accept() -*/ -void QGestureEvent::ignore(Qt::GestureType gestureType) -{ - setAccepted(gestureType, false); -} - -/*! - Returns true if the gesture of type \a gestureType is accepted; otherwise - returns false. -*/ -bool QGestureEvent::isAccepted(Qt::GestureType gestureType) const -{ - return d_func()->accepted.value(gestureType, true); -} - -/*! - \internal - - Sets the widget for this event to the \a widget specified. -*/ -void QGestureEvent::setWidget(QWidget *widget) -{ - d_func()->widget = widget; -} - -/*! - Returns the widget on which the event occurred. -*/ -QWidget *QGestureEvent::widget() const -{ - return d_func()->widget; -} - -#ifndef QT_NO_GRAPHICSVIEW -/*! - Returns the scene-local coordinates if the \a gesturePoint is inside a - graphics view. - - This functional might be useful when the gesture event is delivered to a - QGraphicsObject to translate a point in screen coordinates to scene-local - coordinates. - - \sa QPointF::isNull(). -*/ -QPointF QGestureEvent::mapToGraphicsScene(const QPointF &gesturePoint) const -{ - QWidget *w = widget(); - if (w) // we get the viewport as widget, not the graphics view - w = w->parentWidget(); - QGraphicsView *view = qobject_cast<QGraphicsView*>(w); - if (view) { - return view->mapToScene(view->mapFromGlobal(gesturePoint.toPoint())); - } - return QPointF(); -} -#endif //QT_NO_GRAPHICSVIEW - -/*! - \internal -*/ -QGestureEventPrivate *QGestureEvent::d_func() -{ - return reinterpret_cast<QGestureEventPrivate *>(d); -} - -/*! - \internal -*/ -const QGestureEventPrivate *QGestureEvent::d_func() const -{ - return reinterpret_cast<const QGestureEventPrivate *>(d); -} - -#ifdef Q_NO_USING_KEYWORD -/*! - \fn void QGestureEvent::setAccepted(bool accepted) - - Sets or clears the event's internal flag that determines whether it should - be delivered to other objects. - - Calling this function with a value of true for \a accepted indicates that the - caller has accepted the event and that it should not be propagated further. - Calling this function with a value of false indicates that the caller has - ignored the event and that it should be delivered to other objects. - - For convenience, the accept flag can also be set with accept(), and cleared - with ignore(). - - \sa QEvent::accepted -*/ -/*! - \fn bool QGestureEvent::isAccepted() const - - Returns true is the event has been accepted; otherwise returns false. - - \sa QEvent::accepted -*/ -/*! - \fn void QGestureEvent::accept() - - Accepts the event, the equivalent of calling setAccepted(true). - - \sa QEvent::accept() -*/ -/*! - \fn void QGestureEvent::ignore() - - Ignores the event, the equivalent of calling setAccepted(false). - - \sa QEvent::ignore() -*/ -#endif - -#endif // QT_NO_GESTURES - -/*! - \class QScrollPrepareEvent - \since 4.8 - \ingroup events - - \brief The QScrollPrepareEvent class is send in preparation of a scrolling. - - The scroll prepare event is send before scrolling (usually by QScroller) is started. - The object receiving this event should set viewportSize, maxContentPos and contentPos. - It also should accept this event to indicate that scrolling should be started. - - It is not guaranteed that a QScrollEvent will be send after an acceepted - QScrollPrepareEvent, e.g. in a case where the maximum content position is (0,0). - - \sa QScrollEvent, QScroller -*/ - -/*! - Creates new QScrollPrepareEvent - The \a startPos is the position of a touch or mouse event that started the scrolling. -*/ -QScrollPrepareEvent::QScrollPrepareEvent(const QPointF &startPos) - : QEvent(QEvent::ScrollPrepare) -{ - d = reinterpret_cast<QEventPrivate *>(new QScrollPrepareEventPrivate()); - d_func()->startPos = startPos; -} - -/*! - Destroys QScrollEvent. -*/ -QScrollPrepareEvent::~QScrollPrepareEvent() -{ - delete reinterpret_cast<QScrollPrepareEventPrivate *>(d); -} - -/*! - Returns the position of the touch or mouse event that started the scrolling. -*/ -QPointF QScrollPrepareEvent::startPos() const -{ - return d_func()->startPos; -} - -/*! - Returns size of the area that is to be scrolled as set by setViewportSize - - \sa setViewportSize() -*/ -QSizeF QScrollPrepareEvent::viewportSize() const -{ - return d_func()->viewportSize; -} - -/*! - Returns the range of coordinates for the content as set by setContentPosRange(). -*/ -QRectF QScrollPrepareEvent::contentPosRange() const -{ - return d_func()->contentPosRange; -} - -/*! - Returns the current position of the content as set by setContentPos. -*/ -QPointF QScrollPrepareEvent::contentPos() const -{ - return d_func()->contentPos; -} - - -/*! - Sets the size of the area that is to be scrolled to \a size. - - \sa viewportSize() -*/ -void QScrollPrepareEvent::setViewportSize(const QSizeF &size) -{ - d_func()->viewportSize = size; -} - -/*! - Sets the range of content coordinates to \a rect. - - \sa contentPosRange() -*/ -void QScrollPrepareEvent::setContentPosRange(const QRectF &rect) -{ - d_func()->contentPosRange = rect; -} - -/*! - Sets the current content position to \a pos. - - \sa contentPos() -*/ -void QScrollPrepareEvent::setContentPos(const QPointF &pos) -{ - d_func()->contentPos = pos; -} - - -/*! - \internal -*/ -QScrollPrepareEventPrivate *QScrollPrepareEvent::d_func() -{ - return reinterpret_cast<QScrollPrepareEventPrivate *>(d); -} - -/*! - \internal -*/ -const QScrollPrepareEventPrivate *QScrollPrepareEvent::d_func() const -{ - return reinterpret_cast<const QScrollPrepareEventPrivate *>(d); -} - -/*! - \class QScrollEvent - \since 4.8 - \ingroup events - - \brief The QScrollEvent class is send when scrolling. - - The scroll event is send to indicate that the receiver should be scrolled. - Usually the receiver should be something visual like QWidget or QGraphicsObject. - - Some care should be taken that no conflicting QScrollEvents are sent from two - sources. Using QScroller::scrollTo is save however. - - \sa QScrollPrepareEvent, QScroller -*/ - -/*! - \enum QScrollEvent::ScrollState - - This enum describes the states a scroll event can have. - - \value ScrollStarted Set for the first scroll event of a scroll activity. - - \value ScrollUpdated Set for all but the first and the last scroll event of a scroll activity. - - \value ScrollFinished Set for the last scroll event of a scroll activity. - - \sa QScrollEvent::scrollState() -*/ - -/*! - Creates a new QScrollEvent - \a contentPos is the new content position, \a overshootDistance is the - new overshoot distance while \a scrollState indicates if this scroll - event is the first one, the last one or some event in between. -*/ -QScrollEvent::QScrollEvent(const QPointF &contentPos, const QPointF &overshootDistance, ScrollState scrollState) - : QEvent(QEvent::Scroll) -{ - d = reinterpret_cast<QEventPrivate *>(new QScrollEventPrivate()); - d_func()->contentPos = contentPos; - d_func()->overshoot= overshootDistance; - d_func()->state = scrollState; -} - -/*! - Destroys QScrollEvent. -*/ -QScrollEvent::~QScrollEvent() -{ - delete reinterpret_cast<QScrollEventPrivate *>(d); -} - -/*! - Returns the new scroll position. -*/ -QPointF QScrollEvent::contentPos() const -{ - return d_func()->contentPos; -} - -/*! - Returns the new overshoot distance. - See QScroller for an explanation of the term overshoot. - - \sa QScroller -*/ -QPointF QScrollEvent::overshootDistance() const -{ - return d_func()->overshoot; -} - -/*! - Returns the current scroll state as a combination of ScrollStateFlag values. - ScrollStarted (or ScrollFinished) will be set, if this scroll event is the first (or last) event in a scrolling activity. - Please note that both values can be set at the same time, if the activity consists of a single QScrollEvent. - All other scroll events in between will have their state set to ScrollUpdated. - - A widget could for example revert selections when scrolling is started and stopped. -*/ -QScrollEvent::ScrollState QScrollEvent::scrollState() const -{ - return d_func()->state; -} - -/*! - \internal -*/ -QScrollEventPrivate *QScrollEvent::d_func() -{ - return reinterpret_cast<QScrollEventPrivate *>(d); -} - -/*! - \internal -*/ -const QScrollEventPrivate *QScrollEvent::d_func() const -{ - return reinterpret_cast<const QScrollEventPrivate *>(d); -} - -QT_END_NAMESPACE |