QtBase  v6.3.1
qevent.cpp
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2020 The Qt Company Ltd.
4 ** Contact: https://www.qt.io/licensing/
5 **
6 ** This file is part of the QtGui module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see https://www.qt.io/terms-conditions. For further
15 ** information use the contact form at https://www.qt.io/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 3 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL3 included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 3 requirements
23 ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24 **
25 ** GNU General Public License Usage
26 ** Alternatively, this file may be used under the terms of the GNU
27 ** General Public License version 2.0 or (at your option) the GNU General
28 ** Public license version 3 or any later version approved by the KDE Free
29 ** Qt Foundation. The licenses are as published by the Free Software
30 ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31 ** included in the packaging of this file. Please review the following
32 ** information to ensure the GNU General Public License requirements will
33 ** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34 ** https://www.gnu.org/licenses/gpl-3.0.html.
35 **
36 ** $QT_END_LICENSE$
37 **
38 ****************************************************************************/
39 
40 #include "qevent.h"
41 #include "qcursor.h"
42 #include "private/qguiapplication_p.h"
43 #include "private/qinputdevice_p.h"
44 #include "private/qpointingdevice_p.h"
45 #include "qpa/qplatformintegration.h"
46 #include "private/qevent_p.h"
47 #include "private/qeventpoint_p.h"
48 #include "qfile.h"
49 #include "qhashfunctions.h"
50 #include "qmetaobject.h"
51 #include "qmimedata.h"
52 #include "qevent_p.h"
53 #include "qmath.h"
54 #include "qloggingcategory.h"
55 
56 #if QT_CONFIG(draganddrop)
57 #include <qpa/qplatformdrag.h>
58 #include <private/qdnd_p.h>
59 #endif
60 
61 #include <private/qdebug_p.h>
62 
64 
65 static_assert(sizeof(QMutableTouchEvent) == sizeof(QTouchEvent));
66 static_assert(sizeof(QMutableSinglePointEvent) == sizeof(QSinglePointEvent));
67 static_assert(sizeof(QMouseEvent) == sizeof(QSinglePointEvent));
68 static_assert(sizeof(QVector2D) == sizeof(quint64));
69 
89 QEnterEvent::QEnterEvent(const QPointF &localPos, const QPointF &scenePos, const QPointF &globalPos, const QPointingDevice *device)
90  : QSinglePointEvent(QEvent::Enter, device, localPos, scenePos, globalPos, Qt::NoButton, Qt::NoButton, Qt::NoModifier)
91 {
92 }
93 
98 {
99 }
100 
168 QInputEvent::QInputEvent(Type type, const QInputDevice *dev, Qt::KeyboardModifiers modifiers)
169  : QEvent(type, QEvent::InputEventTag{}), m_dev(dev), m_modState(modifiers), m_reserved(0)
170 {}
171 
175 QInputEvent::QInputEvent(QEvent::Type type, QEvent::PointerEventTag, const QInputDevice *dev, Qt::KeyboardModifiers modifiers)
176  : QEvent(type, QEvent::PointerEventTag{}), m_dev(dev), m_modState(modifiers), m_reserved(0)
177 {}
178 
182 QInputEvent::QInputEvent(QEvent::Type type, QEvent::SinglePointEventTag, const QInputDevice *dev, Qt::KeyboardModifiers modifiers)
183  : QEvent(type, QEvent::SinglePointEventTag{}), m_dev(dev), m_modState(modifiers), m_reserved(0)
184 {}
185 
190 {
191 }
192 
264 {
265  return m_points[i];
266 }
267 
284  Qt::KeyboardModifiers modifiers, const QList<QEventPoint> &points)
285  : QInputEvent(type, QEvent::PointerEventTag{}, dev, modifiers), m_points(points)
286 {
287 }
288 
292 QPointerEvent::QPointerEvent(QEvent::Type type, QEvent::SinglePointEventTag, const QInputDevice *dev, Qt::KeyboardModifiers modifiers)
293  : QInputEvent(type, QEvent::SinglePointEventTag{}, dev, modifiers)
294 {
295 }
296 
298 {
299 }
300 
306 {
307  for (auto &p : m_points) {
308  if (p.id() == id)
309  return &p;
310  }
311  return nullptr;
312 }
313 
318 {
319  for (const auto &p : points()) {
320  if (exclusiveGrabber(p) && passiveGrabbers(p).isEmpty())
321  return false;
322  }
323  return true;
324 }
325 
331 {
332  for (const auto &p : points()) {
333  if (!p.isAccepted())
334  return false;
335  }
336  return true;
337 }
338 
342 void QPointerEvent::setAccepted(bool accepted)
343 {
344  QEvent::setAccepted(accepted);
345  for (auto &p : m_points)
346  p.setAccepted(accepted);
347 }
348 
355 {
356  return static_cast<const QPointingDevice *>(m_dev);
357 }
358 
363 {
365  for (auto &p : m_points)
367 }
368 
376 {
378  auto persistentPoint = QPointingDevicePrivate::get(pointingDevice())->queryPointById(point.id());
379  if (Q_UNLIKELY(!persistentPoint)) {
380  qWarning() << "point is not in activePoints" << point;
381  return nullptr;
382  }
383  return persistentPoint->exclusiveGrabber;
384 }
385 
393 void QPointerEvent::setExclusiveGrabber(const QEventPoint &point, QObject *exclusiveGrabber)
394 {
396  auto devPriv = QPointingDevicePrivate::get(const_cast<QPointingDevice *>(pointingDevice()));
397  devPriv->setExclusiveGrabber(this, point, exclusiveGrabber);
398 }
399 
409 {
411  auto persistentPoint = QPointingDevicePrivate::get(pointingDevice())->queryPointById(point.id());
412  if (Q_UNLIKELY(!persistentPoint)) {
413  qWarning() << "point is not in activePoints" << point;
414  return {};
415  }
416  return persistentPoint->passiveGrabbers;
417 }
418 
429 {
431  auto devPriv = QPointingDevicePrivate::get(const_cast<QPointingDevice *>(pointingDevice()));
432  return devPriv->addPassiveGrabber(this, point, grabber);
433 }
434 
444 {
446  auto devPriv = QPointingDevicePrivate::get(const_cast<QPointingDevice *>(pointingDevice()));
447  return devPriv->removePassiveGrabber(this, point, grabber);
448 }
449 
458 {
460  auto devPriv = QPointingDevicePrivate::get(const_cast<QPointingDevice *>(pointingDevice()));
461  devPriv->clearPassiveGrabbers(this, point);
462 }
463 
540  const QPointF &localPos, const QPointF &scenePos, const QPointF &globalPos,
541  Qt::MouseButton button, Qt::MouseButtons buttons,
542  Qt::KeyboardModifiers modifiers, Qt::MouseEventSource source)
543  : QPointerEvent(type, QEvent::SinglePointEventTag{}, dev, modifiers),
544  m_button(button),
545  m_mouseState(buttons),
546  m_source(source),
547  m_reserved(0), m_reserved2(0),
548  m_doubleClick(false), m_phase(0), m_invertedScrolling(0)
549 {
550  bool isPress = (button != Qt::NoButton && (button | buttons) == buttons);
551  bool isWheel = (type == QEvent::Type::Wheel);
552  auto devPriv = QPointingDevicePrivate::get(const_cast<QPointingDevice *>(pointingDevice()));
553  auto epd = devPriv->pointById(0);
554  QEventPoint &p = epd->eventPoint;
555  Q_ASSERT(p.device() == dev);
556  // p is a reference to a non-detached instance that lives in QPointingDevicePrivate::activePoints.
557  // Update persistent info in that instance.
558  if (isPress || isWheel)
559  QMutableEventPoint::setGlobalLastPosition(p, globalPos);
560  else
561  QMutableEventPoint::setGlobalLastPosition(p, p.globalPosition());
562  QMutableEventPoint::setGlobalPosition(p, globalPos);
563  if (isWheel && p.state() != QEventPoint::State::Updated)
564  QMutableEventPoint::setGlobalPressPosition(p, globalPos);
565  if (type == MouseButtonDblClick)
566  QMutableEventPoint::setState(p, QEventPoint::State::Stationary);
567  else if (button == Qt::NoButton || isWheel)
568  QMutableEventPoint::setState(p, QEventPoint::State::Updated);
569  else if (isPress)
570  QMutableEventPoint::setState(p, QEventPoint::State::Pressed);
571  else
572  QMutableEventPoint::setState(p, QEventPoint::State::Released);
573  QMutableEventPoint::setScenePosition(p, scenePos);
574  // Now detach, and update the detached instance with ephemeral state.
576  QMutableEventPoint::setPosition(p, localPos);
577  m_points.append(p);
578 }
579 
589  Qt::MouseButton button, Qt::MouseButtons buttons,
590  Qt::KeyboardModifiers modifiers, Qt::MouseEventSource source)
591  : QPointerEvent(type, QEvent::SinglePointEventTag{}, dev, modifiers),
592  m_button(button),
593  m_mouseState(buttons),
594  m_source(source),
595  m_reserved(0), m_reserved2(0),
596  m_doubleClick(false), m_phase(0), m_invertedScrolling(0)
597 {
598  m_points << point;
599 }
600 
605 {
606  // A double-click event does not begin a sequence: it comes after a press event,
607  // and while it tells which button caused the double-click, it doesn't represent
608  // a change of button state. So it's an update event.
609  return m_button != Qt::NoButton && m_mouseState.testFlag(m_button)
611 }
612 
617 {
618  // A double-click event is an update event even though it tells which button
619  // caused the double-click, because a MouseButtonPress event was sent right before it.
621 }
622 
627 {
628  return m_button != Qt::NoButton && !m_mouseState.testFlag(m_button);
629 }
630 
715  Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, const QPointingDevice *device)
716  : QSinglePointEvent(type, device, localPos, localPos,
717 #ifdef QT_NO_CURSOR
718  localPos,
719 #else
720  QCursor::pos(),
721 #endif
722  button, buttons, modifiers)
723 {
724 }
725 
744 QMouseEvent::QMouseEvent(Type type, const QPointF &localPos, const QPointF &globalPos,
745  Qt::MouseButton button, Qt::MouseButtons buttons,
746  Qt::KeyboardModifiers modifiers, const QPointingDevice *device)
747  : QMouseEvent(type, localPos, localPos, globalPos, button, buttons, modifiers, device)
748 {
749 }
750 
769  const QPointF &scenePos, const QPointF &globalPos,
770  Qt::MouseButton button, Qt::MouseButtons buttons,
771  Qt::KeyboardModifiers modifiers, const QPointingDevice *device)
772  : QSinglePointEvent(type, device, localPos, scenePos, globalPos, button, buttons, modifiers)
773 {
774 }
775 
776 QMouseEvent::QMouseEvent(QEvent::Type type, const QPointF &localPos, const QPointF &windowPos,
777  const QPointF &globalPos, Qt::MouseButton button, Qt::MouseButtons buttons,
778  Qt::KeyboardModifiers modifiers, Qt::MouseEventSource source,
779  const QPointingDevice *device)
780  : QSinglePointEvent(type, device, localPos, windowPos, globalPos, button, buttons, modifiers, source)
781 {
782 }
783 
788 {
789 }
790 
820 #if QT_DEPRECATED_SINCE(6, 0)
822 {
824 }
825 #endif
826 
837 Qt::MouseEventFlags QMouseEvent::flags() const
838 {
840 }
841 
1077 QHoverEvent::QHoverEvent(Type type, const QPointF &pos, const QPointF &globalPos, const QPointF &oldPos,
1078  Qt::KeyboardModifiers modifiers, const QPointingDevice *device)
1079  : QSinglePointEvent(type, device, pos, pos, globalPos, Qt::NoButton, Qt::NoButton, modifiers), m_oldPos(oldPos)
1080 {
1081 }
1082 
1083 #if QT_DEPRECATED_SINCE(6, 3)
1097 QHoverEvent::QHoverEvent(Type type, const QPointF &pos, const QPointF &oldPos,
1098  Qt::KeyboardModifiers modifiers, const QPointingDevice *device)
1099  : QSinglePointEvent(type, device, pos, pos, pos, Qt::NoButton, Qt::NoButton, modifiers), m_oldPos(oldPos)
1100 {
1101 }
1102 #endif
1103 
1108 {
1109 }
1110 
1111 #if QT_CONFIG(wheelevent)
1224 QWheelEvent::QWheelEvent(const QPointF &pos, const QPointF &globalPos, QPoint pixelDelta, QPoint angleDelta,
1225  Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::ScrollPhase phase,
1226  bool inverted, Qt::MouseEventSource source, const QPointingDevice *device)
1227  : QSinglePointEvent(Wheel, device, pos, pos, globalPos, Qt::NoButton, buttons, modifiers, source),
1228  m_pixelDelta(pixelDelta), m_angleDelta(angleDelta)
1229 {
1230  m_phase = phase;
1231  m_invertedScrolling = inverted;
1232 }
1233 
1237 QWheelEvent::~QWheelEvent()
1238 {
1239 }
1240 
1244 bool QWheelEvent::isBeginEvent() const
1245 {
1246  return m_phase == Qt::ScrollBegin;
1247 }
1248 
1252 bool QWheelEvent::isUpdateEvent() const
1253 {
1254  return m_phase == Qt::ScrollUpdate || m_phase == Qt::ScrollMomentum;
1255 }
1256 
1260 bool QWheelEvent::isEndEvent() const
1261 {
1262  return m_phase == Qt::ScrollEnd;
1263 }
1264 
1265 #endif // QT_CONFIG(wheelevent)
1266 
1379 QKeyEvent::QKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers, const QString& text,
1380  bool autorep, quint16 count)
1381  : QInputEvent(type, QInputDevice::primaryKeyboard(), modifiers), m_text(text), m_key(key),
1382  m_scanCode(0), m_virtualKey(0), m_nativeModifiers(0),
1383  m_count(count), m_autoRepeat(autorep)
1384 {
1386  ignore();
1387 }
1388 
1407 QKeyEvent::QKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers,
1408  quint32 nativeScanCode, quint32 nativeVirtualKey, quint32 nativeModifiers,
1409  const QString &text, bool autorep, quint16 count, const QInputDevice *device)
1410  : QInputEvent(type, device, modifiers), m_text(text), m_key(key),
1411  m_scanCode(nativeScanCode), m_virtualKey(nativeVirtualKey), m_nativeModifiers(nativeModifiers),
1412  m_count(count), m_autoRepeat(autorep)
1413 {
1415  ignore();
1416 }
1417 
1418 
1423 {
1424 }
1425 
1502 Qt::KeyboardModifiers QKeyEvent::modifiers() const
1503 {
1504  if (key() == Qt::Key_Shift)
1505  return Qt::KeyboardModifiers(QInputEvent::modifiers()^Qt::ShiftModifier);
1506  if (key() == Qt::Key_Control)
1507  return Qt::KeyboardModifiers(QInputEvent::modifiers()^Qt::ControlModifier);
1508  if (key() == Qt::Key_Alt)
1509  return Qt::KeyboardModifiers(QInputEvent::modifiers()^Qt::AltModifier);
1510  if (key() == Qt::Key_Meta)
1511  return Qt::KeyboardModifiers(QInputEvent::modifiers()^Qt::MetaModifier);
1512  if (key() == Qt::Key_AltGr)
1513  return Qt::KeyboardModifiers(QInputEvent::modifiers()^Qt::GroupSwitchModifier);
1514  return QInputEvent::modifiers();
1515 }
1516 
1526 #if QT_CONFIG(shortcut)
1534 bool QKeyEvent::matches(QKeySequence::StandardKey matchKey) const
1535 {
1536  //The keypad and group switch modifier should not make a difference
1537  uint searchkey = (modifiers() | key()) & ~(Qt::KeypadModifier | Qt::GroupSwitchModifier);
1538 
1540  return bindings.contains(QKeySequence(searchkey));
1541 }
1542 #endif // QT_CONFIG(shortcut)
1543 
1544 
1595  : QEvent(type), m_reason(reason)
1596 {}
1597 
1602 {
1603 }
1604 
1609 {
1610  return m_reason;
1611 }
1612 
1664  : QEvent(Paint), m_rect(paintRegion.boundingRect()), m_region(paintRegion), m_erased(false)
1665 {}
1666 
1672  : QEvent(Paint), m_rect(paintRect),m_region(paintRect), m_erased(false)
1673 {}
1674 
1675 
1680 {
1681 }
1682 
1719 QMoveEvent::QMoveEvent(const QPoint &pos, const QPoint &oldPos)
1720  : QEvent(Move), m_pos(pos), m_oldPos(oldPos)
1721 {}
1722 
1727 {
1728 }
1729 
1770  : QEvent(Expose)
1771  , m_region(exposeRegion)
1772 {
1773 }
1774 
1779 {
1780 }
1781 
1819  : QEvent(PlatformSurface)
1820  , m_surfaceEventType(surfaceEventType)
1821 {
1822 }
1823 
1828 {
1829 }
1830 
1857  : QEvent(Resize), m_size(size), m_oldSize(oldSize)
1858 {}
1859 
1864 {
1865 }
1866 
1937  : QEvent(Close)
1938 {}
1939 
1943 {
1944 }
1945 
1970  : QEvent(IconDrag)
1971 { ignore(); }
1972 
1975 {
1976 }
1977 
1995 #ifndef QT_NO_CONTEXTMENU
2008  Qt::KeyboardModifiers modifiers)
2009  : QInputEvent(ContextMenu, QPointingDevice::primaryPointingDevice(), modifiers), m_pos(pos), m_globalPos(globalPos), m_reason(reason)
2010 {}
2011 
2012 
2015 {
2016 }
2032  : QInputEvent(ContextMenu, QInputDevice::primaryKeyboard()), m_pos(pos), m_reason(reason)
2033 {
2034 #ifndef QT_NO_CURSOR
2036 #endif
2037 }
2038 
2092 #endif // QT_NO_CONTEXTMENU
2093 
2308  : QEvent(QEvent::InputMethod), m_replacementStart(0), m_replacementLength(0)
2309 {
2310 }
2311 
2322 QInputMethodEvent::QInputMethodEvent(const QString &preeditText, const QList<Attribute> &attributes)
2323  : QEvent(QEvent::InputMethod), m_preedit(preeditText), m_attributes(attributes),
2324  m_replacementStart(0), m_replacementLength(0)
2325 {
2326 }
2327 
2329 {
2330 }
2331 
2348 void QInputMethodEvent::setCommitString(const QString &commitString, int replaceFrom, int replaceLength)
2349 {
2350  m_commit = commitString;
2351  m_replacementStart = replaceFrom;
2352  m_replacementLength = replaceLength;
2353 }
2354 
2431 QInputMethodQueryEvent::QInputMethodQueryEvent(Qt::InputMethodQueries queries)
2433  m_queries(queries)
2434 {
2435 }
2436 
2441 {
2442 }
2443 
2448 {
2449  for (int i = 0; i < m_values.size(); ++i) {
2450  if (m_values.at(i).query == query) {
2451  m_values[i].value = value;
2452  return;
2453  }
2454  }
2455  QueryPair pair = { query, value };
2456  m_values.append(pair);
2457 }
2458 
2463 {
2464  for (int i = 0; i < m_values.size(); ++i)
2465  if (m_values.at(i).query == query)
2466  return m_values.at(i).value;
2467  return QVariant();
2468 }
2469 
2470 #if QT_CONFIG(tabletevent)
2471 
2578 QTabletEvent::QTabletEvent(Type type, const QPointingDevice *dev, const QPointF &pos, const QPointF &globalPos,
2579  qreal pressure, float xTilt, float yTilt,
2580  float tangentialPressure, qreal rotation, float z,
2581  Qt::KeyboardModifiers keyState,
2582  Qt::MouseButton button, Qt::MouseButtons buttons)
2583  : QSinglePointEvent(type, dev, pos, pos, globalPos, button, buttons, keyState),
2584  m_tangential(tangentialPressure),
2585  m_xTilt(xTilt),
2586  m_yTilt(yTilt),
2587  m_z(z)
2588 {
2589  QEventPoint &p = point(0);
2590  QMutableEventPoint::setPressure(p, pressure);
2591  QMutableEventPoint::setRotation(p, rotation);
2592 }
2593 
2597 QTabletEvent::~QTabletEvent()
2598 {
2599 }
2600 
2790 #endif // QT_CONFIG(tabletevent)
2791 
2792 #ifndef QT_NO_GESTURES
2858 #if QT_DEPRECATED_SINCE(6, 2)
2876 QNativeGestureEvent::QNativeGestureEvent(Qt::NativeGestureType type, const QPointingDevice *device,
2877  const QPointF &localPos, const QPointF &scenePos,
2878  const QPointF &globalPos, qreal realValue, quint64 sequenceId,
2879  quint64 intValue)
2880  : QSinglePointEvent(QEvent::NativeGesture, device, localPos, scenePos, globalPos, Qt::NoButton,
2881  Qt::NoButton, Qt::NoModifier),
2882  m_sequenceId(sequenceId), m_realValue(realValue), m_gestureType(type)
2883 {
2884  if (qIsNull(realValue) && intValue != 0)
2885  m_realValue = intValue;
2886 }
2887 #endif // deprecated
2888 
2912 QNativeGestureEvent::QNativeGestureEvent(Qt::NativeGestureType type, const QPointingDevice *device, int fingerCount,
2913  const QPointF &localPos, const QPointF &scenePos,
2914  const QPointF &globalPos, qreal value, const QPointF &delta,
2915  quint64 sequenceId)
2916  : QSinglePointEvent(QEvent::NativeGesture, device, localPos, scenePos, globalPos, Qt::NoButton,
2917  Qt::NoButton, Qt::NoModifier),
2918  m_sequenceId(sequenceId), m_delta(delta), m_realValue(value), m_gestureType(type), m_fingerCount(fingerCount)
2919 {
2920  Q_ASSERT(fingerCount < 16); // we store it in 4 bits unsigned
2921 }
2922 
2923 QNativeGestureEvent::~QNativeGestureEvent() = default;
2924 
3005 #endif // QT_NO_GESTURES
3006 
3007 #if QT_CONFIG(draganddrop)
3020 QDragMoveEvent::QDragMoveEvent(const QPoint& pos, Qt::DropActions actions, const QMimeData *data,
3021  Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type)
3022  : QDropEvent(pos, actions, data, buttons, modifiers, type)
3023  , m_rect(pos, QSize(1, 1))
3024 {}
3025 
3029 QDragMoveEvent::~QDragMoveEvent()
3030 {
3031 }
3032 
3121 // ### pos is in which coordinate system?
3133 QDropEvent::QDropEvent(const QPointF& pos, Qt::DropActions actions, const QMimeData *data,
3134  Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type)
3135  : QEvent(type), m_pos(pos), m_mouseState(buttons),
3136  m_modState(modifiers), m_actions(actions),
3137  m_data(data)
3138 {
3139  m_defaultAction = m_dropAction =
3140  QGuiApplicationPrivate::platformIntegration()->drag()->defaultAction(m_actions, modifiers);
3141  ignore();
3142 }
3143 
3145 QDropEvent::~QDropEvent()
3146 {
3147 }
3148 
3149 
3161 QObject* QDropEvent::source() const
3162 {
3163  if (const QDragManager *manager = QDragManager::self())
3164  return manager->source();
3165  return nullptr;
3166 }
3167 
3168 
3170 {
3171  if (!(action & m_actions) && action != Qt::IgnoreAction)
3172  action = m_defaultAction;
3173  m_dropAction = action;
3174 }
3175 
3287 QDragEnterEvent::QDragEnterEvent(const QPoint& point, Qt::DropActions actions, const QMimeData *data,
3288  Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers)
3289  : QDragMoveEvent(point, actions, data, buttons, modifiers, DragEnter)
3290 {}
3291 
3294 QDragEnterEvent::~QDragEnterEvent()
3295 {
3296 }
3297 
3346 QDragLeaveEvent::QDragLeaveEvent()
3347  : QEvent(DragLeave)
3348 {}
3349 
3352 QDragLeaveEvent::~QDragLeaveEvent()
3353 {
3354 }
3355 #endif // QT_CONFIG(draganddrop)
3356 
3382 QHelpEvent::QHelpEvent(Type type, const QPoint &pos, const QPoint &globalPos)
3383  : QEvent(type), m_pos(pos), m_globalPos(globalPos)
3384 {}
3385 
3439 {
3440 }
3441 
3442 #ifndef QT_NO_STATUSTIP
3443 
3492  : QEvent(StatusTip), m_tip(tip)
3493 {}
3494 
3498 {
3499 }
3500 
3509 #endif // QT_NO_STATUSTIP
3510 
3511 #if QT_CONFIG(whatsthis)
3512 
3531 QWhatsThisClickedEvent::QWhatsThisClickedEvent(const QString &href)
3532  : QEvent(WhatsThisClicked), m_href(href)
3533 {}
3534 
3537 QWhatsThisClickedEvent::~QWhatsThisClickedEvent()
3538 {
3539 }
3540 
3548 #endif // QT_CONFIG(whatsthis)
3549 
3550 #ifndef QT_NO_ACTION
3551 
3577 QActionEvent::QActionEvent(int type, QAction *action, QAction *before)
3578  : QEvent(static_cast<QEvent::Type>(type)), m_action(action), m_before(before)
3579 {}
3580 
3583 QActionEvent::~QActionEvent()
3584 {
3585 }
3586 
3606 #endif // QT_NO_ACTION
3607 
3632  : QEvent(Hide)
3633 {}
3634 
3638 {
3639 }
3640 
3662  : QEvent(Show)
3663 {}
3664 
3668 {
3669 }
3670 
3712  : QEvent(FileOpen), m_file(file), m_url(QUrl::fromLocalFile(file))
3713 {
3714 }
3715 
3722  : QEvent(FileOpen), m_file(url.toLocalFile()), m_url(url)
3723 {
3724 }
3725 
3726 
3730 {
3731 }
3732 
3758 bool QFileOpenEvent::openFile(QFile &file, QIODevice::OpenMode flags) const
3759 {
3760  file.setFileName(m_file);
3761  return file.open(flags);
3762 }
3763 
3764 #ifndef QT_NO_TOOLBAR
3786  : QEvent(ToolBarChange), m_toggle(t)
3787 {}
3788 
3792 {
3793 }
3794 
3800 /*
3801  \fn Qt::ButtonState QToolBarChangeEvent::state() const
3802 
3803  Returns the keyboard modifier flags at the time of the event.
3804 
3805  The returned value is a selection of the following values,
3806  combined using the OR operator:
3807  Qt::ShiftButton, Qt::ControlButton, Qt::MetaButton, and Qt::AltButton.
3808 */
3809 
3810 #endif // QT_NO_TOOLBAR
3811 
3812 #if QT_CONFIG(shortcut)
3813 
3821 QShortcutEvent::QShortcutEvent(const QKeySequence &key, int id, bool ambiguous)
3822  : QEvent(Shortcut), m_sequence(key), m_shortcutId(id), m_ambiguous(ambiguous)
3823 {
3824 }
3825 
3829 QShortcutEvent::~QShortcutEvent()
3830 {
3831 }
3832 
3833 #endif // QT_CONFIG(shortcut)
3834 
3835 #ifndef QT_NO_DEBUG_STREAM
3836 
3837 static inline void formatTouchEvent(QDebug d, const QTouchEvent &t)
3838 {
3839  d << "QTouchEvent(";
3840  QtDebugUtils::formatQEnum(d, t.type());
3841  d << " device: " << t.device()->name();
3842  d << " states: ";
3843  QtDebugUtils::formatQFlags(d, t.touchPointStates());
3844  d << ", " << t.points().size() << " points: " << t.points() << ')';
3845 }
3846 
3847 static void formatUnicodeString(QDebug d, const QString &s)
3848 {
3849  d << '"' << Qt::hex;
3850  for (int i = 0; i < s.size(); ++i) {
3851  if (i)
3852  d << ',';
3853  d << "U+" << s.at(i).unicode();
3854  }
3855  d << Qt::dec << '"';
3856 }
3857 
3858 static inline void formatInputMethodEvent(QDebug d, const QInputMethodEvent *e)
3859 {
3860  d << "QInputMethodEvent(";
3861  if (!e->preeditString().isEmpty()) {
3862  d << "preedit=";
3863  formatUnicodeString(d, e->preeditString());
3864  }
3865  if (!e->commitString().isEmpty()) {
3866  d << ", commit=";
3867  formatUnicodeString(d, e->commitString());
3868  }
3869  if (e->replacementLength()) {
3870  d << ", replacementStart=" << e->replacementStart() << ", replacementLength="
3871  << e->replacementLength();
3872  }
3873  if (const int attributeCount = e->attributes().size()) {
3874  d << ", attributes= {";
3875  for (int a = 0; a < attributeCount; ++a) {
3876  const QInputMethodEvent::Attribute &at = e->attributes().at(a);
3877  if (a)
3878  d << ',';
3879  d << "[type= " << at.type << ", start=" << at.start << ", length=" << at.length
3880  << ", value=" << at.value << ']';
3881  }
3882  d << '}';
3883  }
3884  d << ')';
3885 }
3886 
3887 static inline void formatInputMethodQueryEvent(QDebug d, const QInputMethodQueryEvent *e)
3888 {
3889  QDebugStateSaver saver(d);
3890  d.noquote();
3891  const Qt::InputMethodQueries queries = e->queries();
3892  d << "QInputMethodQueryEvent(queries=" << Qt::showbase << Qt::hex << int(queries)
3893  << Qt::noshowbase << Qt::dec << ", {";
3894  for (unsigned mask = 1; mask <= Qt::ImInputItemClipRectangle; mask<<=1) {
3895  if (queries & mask) {
3896  const Qt::InputMethodQuery query = static_cast<Qt::InputMethodQuery>(mask);
3897  const QVariant value = e->value(query);
3898  if (value.isValid()) {
3899  d << '[';
3900  QtDebugUtils::formatQEnum(d, query);
3901  d << '=';
3902  if (query == Qt::ImHints)
3903  QtDebugUtils::formatQFlags(d, Qt::InputMethodHints(value.toInt()));
3904  else
3905  d << value.toString();
3906  d << "],";
3907  }
3908  }
3909  }
3910  d << "})";
3911 }
3912 
3913 static const char *eventClassName(QEvent::Type t)
3914 {
3915  switch (t) {
3916  case QEvent::ActionAdded:
3917  case QEvent::ActionRemoved:
3918  case QEvent::ActionChanged:
3919  return "QActionEvent";
3923  case QEvent::MouseMove:
3928  return "QMouseEvent";
3929  case QEvent::DragEnter:
3930  return "QDragEnterEvent";
3931  case QEvent::DragMove:
3932  return "QDragMoveEvent";
3933  case QEvent::Drop:
3934  return "QDropEvent";
3935  case QEvent::KeyPress:
3936  case QEvent::KeyRelease:
3938  return "QKeyEvent";
3939  case QEvent::FocusIn:
3940  case QEvent::FocusOut:
3942  return "QFocusEvent";
3943  case QEvent::ChildAdded:
3944  case QEvent::ChildPolished:
3945  case QEvent::ChildRemoved:
3946  return "QChildEvent";
3947  case QEvent::Paint:
3948  return "QPaintEvent";
3949  case QEvent::Move:
3950  return "QMoveEvent";
3951  case QEvent::Resize:
3952  return "QResizeEvent";
3953  case QEvent::Show:
3954  return "QShowEvent";
3955  case QEvent::Hide:
3956  return "QHideEvent";
3957  case QEvent::Enter:
3958  return "QEnterEvent";
3959  case QEvent::Close:
3960  return "QCloseEvent";
3961  case QEvent::FileOpen:
3962  return "QFileOpenEvent";
3963 #ifndef QT_NO_GESTURES
3964  case QEvent::NativeGesture:
3965  return "QNativeGestureEvent";
3966  case QEvent::Gesture:
3968  return "QGestureEvent";
3969 #endif
3970  case QEvent::HoverEnter:
3971  case QEvent::HoverLeave:
3972  case QEvent::HoverMove:
3973  return "QHoverEvent";
3976  case QEvent::TabletPress:
3977  case QEvent::TabletMove:
3978  case QEvent::TabletRelease:
3979  return "QTabletEvent";
3980  case QEvent::StatusTip:
3981  return "QStatusTipEvent";
3982  case QEvent::ToolTip:
3983  return "QHelpEvent";
3985  return "QWindowStateChangeEvent";
3986  case QEvent::Wheel:
3987  return "QWheelEvent";
3988  case QEvent::TouchBegin:
3989  case QEvent::TouchUpdate:
3990  case QEvent::TouchEnd:
3991  return "QTouchEvent";
3992  case QEvent::Shortcut:
3993  return "QShortcutEvent";
3994  case QEvent::InputMethod:
3995  return "QInputMethodEvent";
3997  return "QInputMethodQueryEvent";
3999  return "QScreenOrientationChangeEvent";
4000  case QEvent::ScrollPrepare:
4001  return "QScrollPrepareEvent";
4002  case QEvent::Scroll:
4003  return "QScrollEvent";
4008  return "QGraphicsSceneMouseEvent";
4019  return "QGraphicsSceneEvent";
4020  case QEvent::Timer:
4021  return "QTimerEvent";
4023  return "QPlatformSurfaceEvent";
4024  default:
4025  break;
4026  }
4027  return "QEvent";
4028 }
4029 
4030 # if QT_CONFIG(draganddrop)
4031 
4032 static void formatDropEvent(QDebug d, const QDropEvent *e)
4033 {
4034  const QEvent::Type type = e->type();
4035  d << eventClassName(type) << "(dropAction=";
4036  QtDebugUtils::formatQEnum(d, e->dropAction());
4037  d << ", proposedAction=";
4038  QtDebugUtils::formatQEnum(d, e->proposedAction());
4039  d << ", possibleActions=";
4040  QtDebugUtils::formatQFlags(d, e->possibleActions());
4041  d << ", posF=";
4042  QtDebugUtils::formatQPoint(d, e->position());
4044  d << ", answerRect=" << static_cast<const QDragMoveEvent *>(e)->answerRect();
4045  d << ", formats=" << e->mimeData()->formats();
4046  QtDebugUtils::formatNonNullQFlags(d, ", keyboardModifiers=", e->modifiers());
4047  d << ", ";
4048  QtDebugUtils::formatQFlags(d, e->buttons());
4049 }
4050 
4051 # endif // QT_CONFIG(draganddrop)
4052 
4053 # if QT_CONFIG(tabletevent)
4054 
4055 static void formatTabletEvent(QDebug d, const QTabletEvent *e)
4056 {
4057  const QEvent::Type type = e->type();
4058 
4059  d << eventClassName(type) << '(';
4060  QtDebugUtils::formatQEnum(d, type);
4061  d << ' ';
4062  QtDebugUtils::formatQFlags(d, e->buttons());
4063  d << " pos=";
4064  QtDebugUtils::formatQPoint(d, e->position());
4065  d << " z=" << e->z()
4066  << " xTilt=" << e->xTilt()
4067  << " yTilt=" << e->yTilt();
4069  d << " pressure=" << e->pressure();
4070  if (e->device()->hasCapability(QInputDevice::Capability::Rotation))
4071  d << " rotation=" << e->rotation();
4072  if (e->deviceType() == QInputDevice::DeviceType::Airbrush)
4073  d << " tangentialPressure=" << e->tangentialPressure();
4074  d << " dev=" << e->device() << ')';
4075 }
4076 
4077 # endif // QT_CONFIG(tabletevent)
4078 
4080 {
4081  if (!tp) {
4082  dbg << "QEventPoint(0x0)";
4083  return dbg;
4084  }
4085  return operator<<(dbg, *tp);
4086 }
4087 
4089 {
4090  QDebugStateSaver saver(dbg);
4091  dbg.nospace();
4092  dbg << "QEventPoint(id=" << tp.id() << " ts=" << tp.timestamp();
4093  dbg << " pos=";
4094  QtDebugUtils::formatQPoint(dbg, tp.position());
4095  dbg << " scn=";
4096  QtDebugUtils::formatQPoint(dbg, tp.scenePosition());
4097  dbg << " gbl=";
4098  QtDebugUtils::formatQPoint(dbg, tp.globalPosition());
4099  dbg << ' ';
4100  QtDebugUtils::formatQEnum(dbg, tp.state());
4101  if (!qFuzzyIsNull(tp.pressure()) && !qFuzzyCompare(tp.pressure(), 1))
4102  dbg << " pressure=" << tp.pressure();
4103  if (!tp.ellipseDiameters().isEmpty() || !qFuzzyIsNull(tp.rotation())) {
4104  dbg << " ellipse=("
4105  << tp.ellipseDiameters().width() << "x" << tp.ellipseDiameters().height()
4106  << " \u2221 " << tp.rotation() << ')';
4107  }
4108  dbg << " vel=";
4109  QtDebugUtils::formatQPoint(dbg, tp.velocity().toPointF());
4110  dbg << " press=";
4111  QtDebugUtils::formatQPoint(dbg, tp.pressPosition());
4112  dbg << " last=";
4113  QtDebugUtils::formatQPoint(dbg, tp.lastPosition());
4114  dbg << " \u0394 ";
4115  QtDebugUtils::formatQPoint(dbg, tp.position() - tp.lastPosition());
4116  dbg << ')';
4117  return dbg;
4118 }
4119 
4121 {
4122  QDebugStateSaver saver(dbg);
4123  dbg.nospace();
4124  if (!e) {
4125  dbg << "QEvent(this = 0x0)";
4126  return dbg;
4127  }
4128  // More useful event output could be added here
4129  const QEvent::Type type = e->type();
4130  bool isMouse = false;
4131  switch (type) {
4132  case QEvent::Expose:
4135  dbg << "QExposeEvent(" << static_cast<const QExposeEvent *>(e)->region() << ')';
4137  break;
4138  case QEvent::Paint:
4139  dbg << "QPaintEvent(" << static_cast<const QPaintEvent *>(e)->region() << ')';
4140  break;
4142  case QEvent::MouseMove:
4149  isMouse = true;
4150  Q_FALLTHROUGH();
4151  case QEvent::HoverEnter:
4152  case QEvent::HoverMove:
4153  case QEvent::HoverLeave:
4154  {
4155  const QSinglePointEvent *spe = static_cast<const QSinglePointEvent*>(e);
4156  const Qt::MouseButton button = spe->button();
4157  const Qt::MouseButtons buttons = spe->buttons();
4158  dbg << eventClassName(type) << '(';
4159  QtDebugUtils::formatQEnum(dbg, type);
4160  if (isMouse) {
4162  dbg << ' ';
4163  QtDebugUtils::formatQEnum(dbg, button);
4164  }
4165  if (buttons && button != buttons) {
4166  dbg << " btns=";
4167  QtDebugUtils::formatQFlags(dbg, buttons);
4168  }
4169  }
4170  QtDebugUtils::formatNonNullQFlags(dbg, ", ", spe->modifiers());
4171  dbg << " pos=";
4172  QtDebugUtils::formatQPoint(dbg, spe->position());
4173  dbg << " scn=";
4174  QtDebugUtils::formatQPoint(dbg, spe->scenePosition());
4175  dbg << " gbl=";
4176  QtDebugUtils::formatQPoint(dbg, spe->globalPosition());
4177  dbg << " dev=" << spe->device() << ')';
4178  if (isMouse) {
4179  auto src = static_cast<const QMouseEvent*>(e)->source();
4181  dbg << " source=";
4182  QtDebugUtils::formatQEnum(dbg, src);
4183  }
4184  }
4185  }
4186  break;
4187 # if QT_CONFIG(wheelevent)
4188  case QEvent::Wheel: {
4189  const QWheelEvent *we = static_cast<const QWheelEvent *>(e);
4190  dbg << "QWheelEvent(" << we->phase();
4191  if (!we->pixelDelta().isNull() || !we->angleDelta().isNull())
4192  dbg << ", pixelDelta=" << we->pixelDelta() << ", angleDelta=" << we->angleDelta();
4193  dbg << ')';
4194  }
4195  break;
4196 # endif // QT_CONFIG(wheelevent)
4197  case QEvent::KeyPress:
4198  case QEvent::KeyRelease:
4200  {
4201  const QKeyEvent *ke = static_cast<const QKeyEvent *>(e);
4202  dbg << "QKeyEvent(";
4203  QtDebugUtils::formatQEnum(dbg, type);
4204  dbg << ", ";
4205  QtDebugUtils::formatQEnum(dbg, static_cast<Qt::Key>(ke->key()));
4206  QtDebugUtils::formatNonNullQFlags(dbg, ", ", ke->modifiers());
4207  if (!ke->text().isEmpty())
4208  dbg << ", text=" << ke->text();
4209  if (ke->isAutoRepeat())
4210  dbg << ", autorepeat, count=" << ke->count();
4211  dbg << ')';
4212  }
4213  break;
4214 #if QT_CONFIG(shortcut)
4215  case QEvent::Shortcut: {
4216  const QShortcutEvent *se = static_cast<const QShortcutEvent *>(e);
4217  dbg << "QShortcutEvent(" << se->key().toString() << ", id=" << se->shortcutId();
4218  if (se->isAmbiguous())
4219  dbg << ", ambiguous";
4220  dbg << ')';
4221  }
4222  break;
4223 #endif
4225  case QEvent::FocusIn:
4226  case QEvent::FocusOut:
4227  dbg << "QFocusEvent(";
4228  QtDebugUtils::formatQEnum(dbg, type);
4229  dbg << ", ";
4230  QtDebugUtils::formatQEnum(dbg, static_cast<const QFocusEvent *>(e)->reason());
4231  dbg << ')';
4232  break;
4233  case QEvent::Move: {
4234  const QMoveEvent *me = static_cast<const QMoveEvent *>(e);
4235  dbg << "QMoveEvent(";
4236  QtDebugUtils::formatQPoint(dbg, me->pos());
4237  if (!me->spontaneous())
4238  dbg << ", non-spontaneous";
4239  dbg << ')';
4240  }
4241  break;
4242  case QEvent::Resize: {
4243  const QResizeEvent *re = static_cast<const QResizeEvent *>(e);
4244  dbg << "QResizeEvent(";
4245  QtDebugUtils::formatQSize(dbg, re->size());
4246  if (!re->spontaneous())
4247  dbg << ", non-spontaneous";
4248  dbg << ')';
4249  }
4250  break;
4251 # if QT_CONFIG(draganddrop)
4252  case QEvent::DragEnter:
4253  case QEvent::DragMove:
4254  case QEvent::Drop:
4255  formatDropEvent(dbg, static_cast<const QDropEvent *>(e));
4256  break;
4257 # endif // QT_CONFIG(draganddrop)
4258  case QEvent::InputMethod:
4259  formatInputMethodEvent(dbg, static_cast<const QInputMethodEvent *>(e));
4260  break;
4262  formatInputMethodQueryEvent(dbg, static_cast<const QInputMethodQueryEvent *>(e));
4263  break;
4264  case QEvent::TouchBegin:
4265  case QEvent::TouchUpdate:
4266  case QEvent::TouchEnd:
4267  formatTouchEvent(dbg, *static_cast<const QTouchEvent*>(e));
4268  break;
4269  case QEvent::ChildAdded:
4270  case QEvent::ChildPolished:
4271  case QEvent::ChildRemoved:
4272  dbg << "QChildEvent(";
4273  QtDebugUtils::formatQEnum(dbg, type);
4274  dbg << ", " << (static_cast<const QChildEvent*>(e))->child() << ')';
4275  break;
4276 # ifndef QT_NO_GESTURES
4277  case QEvent::NativeGesture: {
4278  const QNativeGestureEvent *ne = static_cast<const QNativeGestureEvent *>(e);
4279  dbg << "QNativeGestureEvent(";
4280  QtDebugUtils::formatQEnum(dbg, ne->gestureType());
4281  dbg << ", fingerCount=" << ne->fingerCount() << ", localPos=";
4282  QtDebugUtils::formatQPoint(dbg, ne->position());
4283  if (!qIsNull(ne->value()))
4284  dbg << ", value=" << ne->value();
4285  if (!ne->delta().isNull()) {
4286  dbg << ", delta=";
4287  QtDebugUtils::formatQPoint(dbg, ne->delta());
4288  }
4289  dbg << ')';
4290  }
4291  break;
4292 # endif // !QT_NO_GESTURES
4294  dbg << "QApplicationStateChangeEvent(";
4295  QtDebugUtils::formatQEnum(dbg, static_cast<const QApplicationStateChangeEvent *>(e)->applicationState());
4296  dbg << ')';
4297  break;
4298 # ifndef QT_NO_CONTEXTMENU
4299  case QEvent::ContextMenu:
4300  dbg << "QContextMenuEvent(" << static_cast<const QContextMenuEvent *>(e)->pos() << ')';
4301  break;
4302 # endif // !QT_NO_CONTEXTMENU
4303 # if QT_CONFIG(tabletevent)
4306  case QEvent::TabletPress:
4307  case QEvent::TabletMove:
4308  case QEvent::TabletRelease:
4309  formatTabletEvent(dbg, static_cast<const QTabletEvent *>(e));
4310  break;
4311 # endif // QT_CONFIG(tabletevent)
4312  case QEvent::Enter:
4313  dbg << "QEnterEvent(" << static_cast<const QEnterEvent *>(e)->position() << ')';
4314  break;
4315  case QEvent::Timer:
4316  dbg << "QTimerEvent(id=" << static_cast<const QTimerEvent *>(e)->timerId() << ')';
4317  break;
4319  dbg << "QPlatformSurfaceEvent(surfaceEventType=";
4320  switch (static_cast<const QPlatformSurfaceEvent *>(e)->surfaceEventType()) {
4322  dbg << "SurfaceCreated";
4323  break;
4325  dbg << "SurfaceAboutToBeDestroyed";
4326  break;
4327  }
4328  dbg << ')';
4329  break;
4330  case QEvent::ScrollPrepare: {
4331  const QScrollPrepareEvent *se = static_cast<const QScrollPrepareEvent *>(e);
4332  dbg << "QScrollPrepareEvent(viewportSize=" << se->viewportSize()
4333  << ", contentPosRange=" << se->contentPosRange()
4334  << ", contentPos=" << se->contentPos() << ')';
4335  }
4336  break;
4337  case QEvent::Scroll: {
4338  const QScrollEvent *se = static_cast<const QScrollEvent *>(e);
4339  dbg << "QScrollEvent(contentPos=" << se->contentPos()
4340  << ", overshootDistance=" << se->overshootDistance()
4341  << ", scrollState=" << se->scrollState() << ')';
4342  }
4343  break;
4344  default:
4345  dbg << eventClassName(type) << '(';
4346  QtDebugUtils::formatQEnum(dbg, type);
4347  dbg << ", " << (const void *)e << ')';
4348  break;
4349  }
4350  return dbg;
4351 }
4352 #endif // !QT_NO_DEBUG_STREAM
4353 
4408 QWindowStateChangeEvent::QWindowStateChangeEvent(Qt::WindowStates oldState, bool isOverride)
4409  : QEvent(WindowStateChange), m_oldStates(oldState), m_override(isOverride)
4410 {
4411 }
4412 
4416 {
4417  return m_override;
4418 }
4419 
4423 {
4424 }
4425 
4426 
4566  const QPointingDevice *device,
4567  Qt::KeyboardModifiers modifiers,
4568  const QList<QEventPoint> &touchPoints)
4569  : QPointerEvent(eventType, device, modifiers, touchPoints),
4570  m_target(nullptr)
4571 {
4572  for (QEventPoint &point : m_points) {
4573  m_touchPointStates |= point.state();
4574  QMutableEventPoint::setDevice(point, device);
4575  }
4576 }
4577 
4586  const QPointingDevice *device,
4587  Qt::KeyboardModifiers modifiers,
4588  QEventPoint::States touchPointStates,
4589  const QList<QEventPoint> &touchPoints)
4590  : QPointerEvent(eventType, device, modifiers, touchPoints),
4591  m_target(nullptr),
4592  m_touchPointStates(touchPointStates)
4593 {
4594  for (QEventPoint &point : m_points)
4595  QMutableEventPoint::setDevice(point, device);
4596 }
4597 
4602 { }
4603 
4608 {
4609  return m_touchPointStates.testFlag(QEventPoint::State::Pressed);
4610 }
4611 
4617 {
4618  return !m_touchPointStates.testFlag(QEventPoint::State::Pressed) &&
4619  !m_touchPointStates.testFlag(QEventPoint::State::Released);
4620 }
4621 
4626 {
4627  return m_touchPointStates.testFlag(QEventPoint::State::Released);
4628 }
4629 
4672  : QEvent(QEvent::ScrollPrepare), m_startPos(startPos)
4673 {
4674 }
4675 
4680 {
4681 }
4682 
4712 {
4713  m_viewportSize = size;
4714 }
4715 
4722 {
4723  m_contentPosRange = rect;
4724 }
4725 
4732 {
4733  m_contentPos = pos;
4734 }
4735 
4736 
4774 QScrollEvent::QScrollEvent(const QPointF &contentPos, const QPointF &overshootDistance, ScrollState scrollState)
4775  : QEvent(QEvent::Scroll), m_contentPos(contentPos), m_overshoot(overshootDistance), m_state(scrollState)
4776 {
4777 }
4778 
4783 {
4784 }
4785 
4817  : QEvent(QEvent::OrientationChange), m_screen(screen), m_orientation(screenOrientation)
4818 {
4819 }
4820 
4825 {
4826 }
4827 
4845  : QEvent(QEvent::ApplicationStateChange), m_applicationState(applicationState)
4846 {
4847 }
4848 
4856  = default;
4857 
4862 {
4864  auto &added = m_points.last();
4865  if (!added.device())
4866  QMutableEventPoint::setDevice(added, pointingDevice());
4867  m_touchPointStates |= point.state();
4868 }
4869 
4870 
4872  = default;
4873 
4875 
4876 #include "moc_qevent.cpp"
small capitals from c petite p scientific i
[1]
Definition: afcover.h:80
The QAction class provides an abstraction for user commands that can be added to different user inter...
Definition: qaction.h:65
QApplicationStateChangeEvent(Qt::ApplicationState state)
Definition: qevent.cpp:4844
The QChildEvent class contains event parameters for child object events.
Definition: qcoreevent.h:383
The QContextMenuEvent class contains parameters that describe a context menu event....
Definition: qevent.h:665
QContextMenuEvent(Reason reason, const QPoint &pos, const QPoint &globalPos, Qt::KeyboardModifiers modifiers=Qt::NoModifier)
Definition: qevent.cpp:2007
QPoint m_globalPos
Definition: qevent.h:689
The QCursor class provides a mouse cursor with an arbitrary shape.
Definition: qcursor.h:81
static QPoint pos()
Definition: qcursor.cpp:224
operator<<(QDataStream &ds, qfloat16 f)
Definition: qfloat16.cpp:327
The QDebug class provides an output stream for debugging information.
Definition: qdebug.h:65
QDebug & nospace()
Definition: qdebug.h:113
Convenience class for custom QDebug operators.
Definition: qdebug.h:176
static QDragManager * self()
Definition: qdnd.cpp:66
The QEnterEvent class contains parameters that describe an enter event.
Definition: qevent.h:197
~QEnterEvent()
Definition: qevent.cpp:97
QEnterEvent(const QPointF &localPos, const QPointF &scenePos, const QPointF &globalPos, const QPointingDevice *device=QPointingDevice::primaryPointingDevice())
Definition: qevent.cpp:89
The QEvent class is the base class of all event classes. Event objects contain event parameters.
Definition: qcoreevent.h:58
virtual void setAccepted(bool accepted)
Definition: qcoreevent.h:310
bool spontaneous() const
Definition: qcoreevent.h:308
@ OrientationChange
Definition: qcoreevent.h:275
@ TabletMove
Definition: qcoreevent.h:134
@ GraphicsSceneDragLeave
Definition: qcoreevent.h:213
@ GraphicsSceneMouseMove
Definition: qcoreevent.h:202
@ Close
Definition: qcoreevent.h:91
@ ActionRemoved
Definition: qcoreevent.h:166
@ Gesture
Definition: qcoreevent.h:266
@ NonClientAreaMouseButtonDblClick
Definition: qcoreevent.h:228
@ StatusTip
Definition: qcoreevent.h:162
@ WindowStateChange
Definition: qcoreevent.h:156
@ TabletEnterProximity
Definition: qcoreevent.h:222
@ GestureOverride
Definition: qcoreevent.h:267
@ GraphicsSceneContextMenu
Definition: qcoreevent.h:206
@ FocusAboutToChange
Definition: qcoreevent.h:81
@ GraphicsSceneMouseRelease
Definition: qcoreevent.h:204
@ ActionAdded
Definition: qcoreevent.h:165
@ DragMove
Definition: qcoreevent.h:115
@ ChildPolished
Definition: qcoreevent.h:120
@ ToolTip
Definition: qcoreevent.h:160
@ Hide
Definition: qcoreevent.h:90
@ GraphicsSceneDragEnter
Definition: qcoreevent.h:211
@ GraphicsSceneDragMove
Definition: qcoreevent.h:212
@ ShortcutOverride
Definition: qcoreevent.h:171
@ FocusOut
Definition: qcoreevent.h:80
@ InputMethod
Definition: qcoreevent.h:133
@ ChildRemoved
Definition: qcoreevent.h:121
@ GraphicsSceneMousePress
Definition: qcoreevent.h:203
@ NativeGesture
Definition: qcoreevent.h:259
@ DragEnter
Definition: qcoreevent.h:114
@ Enter
Definition: qcoreevent.h:82
@ InputMethodQuery
Definition: qcoreevent.h:274
@ ActionChanged
Definition: qcoreevent.h:164
@ KeyRelease
Definition: qcoreevent.h:78
@ Shortcut
Definition: qcoreevent.h:170
@ MouseMove
Definition: qcoreevent.h:76
@ KeyPress
Definition: qcoreevent.h:77
@ Show
Definition: qcoreevent.h:89
@ ApplicationStateChange
Definition: qcoreevent.h:286
@ Paint
Definition: qcoreevent.h:84
@ Resize
Definition: qcoreevent.h:86
@ FocusIn
Definition: qcoreevent.h:79
@ MouseButtonPress
Definition: qcoreevent.h:73
@ FileOpen
Definition: qcoreevent.h:168
@ TouchEnd
Definition: qcoreevent.h:256
@ TouchUpdate
Definition: qcoreevent.h:255
@ TouchBegin
Definition: qcoreevent.h:254
@ HoverLeave
Definition: qcoreevent.h:189
@ NonClientAreaMouseMove
Definition: qcoreevent.h:225
@ HoverEnter
Definition: qcoreevent.h:188
@ GraphicsSceneHoverLeave
Definition: qcoreevent.h:209
@ NonClientAreaMouseButtonRelease
Definition: qcoreevent.h:227
@ GraphicsSceneMouseDoubleClick
Definition: qcoreevent.h:205
@ TabletRelease
Definition: qcoreevent.h:140
@ GraphicsSceneWheel
Definition: qcoreevent.h:215
@ Timer
Definition: qcoreevent.h:72
@ GraphicsSceneDrop
Definition: qcoreevent.h:214
@ PlatformSurface
Definition: qcoreevent.h:291
@ HoverMove
Definition: qcoreevent.h:190
@ TabletPress
Definition: qcoreevent.h:139
@ Scroll
Definition: qcoreevent.h:270
@ GraphicsSceneHoverEnter
Definition: qcoreevent.h:207
@ MouseButtonDblClick
Definition: qcoreevent.h:75
@ GraphicsSceneHoverMove
Definition: qcoreevent.h:208
@ GraphicsSceneHelp
Definition: qcoreevent.h:210
@ TabletLeaveProximity
Definition: qcoreevent.h:223
@ ScrollPrepare
Definition: qcoreevent.h:269
@ Expose
Definition: qcoreevent.h:272
@ NonClientAreaMouseButtonPress
Definition: qcoreevent.h:226
@ Move
Definition: qcoreevent.h:85
@ ContextMenu
Definition: qcoreevent.h:132
@ MouseButtonRelease
Definition: qcoreevent.h:74
@ ChildAdded
Definition: qcoreevent.h:119
Type type() const
Definition: qcoreevent.h:307
void ignore()
Definition: qcoreevent.h:314
The QEventPoint class provides information about a point in a QPointerEvent.
Definition: qeventpoint.h:56
The QExposeEvent class contains event parameters for expose events. \inmodule QtGui.
Definition: qevent.h:574
QExposeEvent(const QRegion &m_region)
Definition: qevent.cpp:1769
The QFile class provides an interface for reading from and writing to files.
Definition: qfile.h:94
QString file() const
Definition: qevent.h:954
bool openFile(QFile &file, QIODevice::OpenMode flags) const
Definition: qevent.cpp:3758
QFileOpenEvent(const QString &file)
Definition: qevent.cpp:3711
The QFocusEvent class contains event parameters for widget focus events. \inmodule QtGui.
Definition: qevent.h:520
QFocusEvent(Type type, Qt::FocusReason reason=Qt::OtherFocusReason)
Definition: qevent.cpp:1594
Qt::FocusReason reason() const
Definition: qevent.cpp:1608
static QPlatformIntegration * platformIntegration()
QHelpEvent(Type type, const QPoint &pos, const QPoint &globalPos)
Definition: qevent.cpp:3382
QHoverEvent(Type type, const QPointF &pos, const QPointF &globalPos, const QPointF &oldPos, Qt::KeyboardModifiers modifiers=Qt::NoModifier, const QPointingDevice *device=QPointingDevice::primaryPointingDevice())
Definition: qevent.cpp:1077
The QInputDevice class describes a device from which a QInputEvent originates.
Definition: qinputdevice.h:53
The QInputEvent class is the base class for events that describe user input.
Definition: qevent.h:76
virtual void setTimestamp(quint64 timestamp)
Definition: qevent.h:88
const QInputDevice * device() const
Definition: qevent.h:83
quint64 timestamp() const
Definition: qevent.h:87
QInputEvent(Type type, const QInputDevice *m_dev, Qt::KeyboardModifiers modifiers=Qt::NoModifier)
Definition: qevent.cpp:168
~QInputEvent()
Definition: qevent.cpp:189
const QInputDevice * m_dev
Definition: qevent.h:94
Qt::KeyboardModifiers modifiers() const
Definition: qevent.h:85
The QInputMethodEvent::Attribute class stores an input method attribute.
Definition: qevent.h:706
The QInputMethodEvent class provides parameters for input method events. \inmodule QtGui.
Definition: qevent.h:696
const QString & commitString() const
Definition: qevent.h:726
void setCommitString(const QString &commitString, int replaceFrom=0, int replaceLength=0)
Definition: qevent.cpp:2348
The QInputMethodQueryEvent class provides an event sent by the input context to input objects.
Definition: qevent.h:753
QInputMethodQueryEvent(Qt::InputMethodQueries queries)
Definition: qevent.cpp:2431
QVariant value(Qt::InputMethodQuery query) const
Definition: qevent.cpp:2462
void setValue(Qt::InputMethodQuery query, const QVariant &value)
Definition: qevent.cpp:2447
The QKeyEvent class describes a key event.
Definition: qevent.h:471
int count() const
Definition: qevent.h:495
Qt::KeyboardModifiers modifiers() const
Definition: qevent.cpp:1502
QString text() const
Definition: qevent.h:493
bool isAutoRepeat() const
Definition: qevent.h:494
QKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers, const QString &text=QString(), bool autorep=false, quint16 count=1)
Definition: qevent.cpp:1379
int key() const
Definition: qevent.h:484
~QKeyEvent()
Definition: qevent.cpp:1422
The QKeySequence class encapsulates a key sequence as used by shortcuts.
Definition: qkeysequence.h:71
static QList< QKeySequence > keyBindings(StandardKey key)
qsizetype size() const noexcept
Definition: qlist.h:414
const_reference at(qsizetype i) const noexcept
Definition: qlist.h:457
T value(qsizetype i) const
Definition: qlist.h:676
T & last()
Definition: qlist.h:646
void append(parameter_type t)
Definition: qlist.h:469
bool qFuzzyCompare(const QMatrix4x4 &m1, const QMatrix4x4 &m2)
Definition: qmatrix4x4.cpp:774
The QMimeData class provides a container for data that records information about its MIME type.
Definition: qmimedata.h:52
The QMouseEvent class contains parameters that describe a mouse event.
Definition: qevent.h:231
Qt::MouseEventFlags flags() const
Definition: qevent.cpp:837
QMouseEvent(Type type, const QPointF &localPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, const QPointingDevice *device=QPointingDevice::primaryPointingDevice())
Definition: qevent.cpp:714
~QMouseEvent()
Definition: qevent.cpp:787
The QMoveEvent class contains event parameters for move events. \inmodule QtGui.
Definition: qevent.h:558
QMoveEvent(const QPoint &pos, const QPoint &oldPos)
Definition: qevent.cpp:1719
const QPoint & pos() const
Definition: qevent.h:566
static Q_GUI_EXPORT void detach(QEventPoint &p)
static Q_GUI_EXPORT void setTimestamp(QEventPoint &p, ulong t)
~QMutableSinglePointEvent() override
~QMutableTouchEvent() override
void addPoint(const QEventPoint &point)
Definition: qevent.cpp:4861
The QNativeGestureEvent class contains parameters that describe a gesture event. \inmodule QtGui.
The QObject class is the base class of all Qt objects.
Definition: qobject.h:125
The QPaintEvent class contains event parameters for paint events. \inmodule QtGui.
Definition: qevent.h:539
QPaintEvent(const QRegion &paintRegion)
Definition: qevent.cpp:1663
The QPlatformSurfaceEvent class is used to notify about native platform surface events....
Definition: qevent.h:592
QPlatformSurfaceEvent(SurfaceEventType surfaceEventType)
Definition: qevent.cpp:1818
SurfaceEventType surfaceEventType() const
Definition: qevent.h:605
The QPointF class defines a point in the plane using floating point precision.
Definition: qpoint.h:242
The QPoint class defines a point in the plane using integer precision.
Definition: qpoint.h:52
A base class for pointer events.
Definition: qevent.h:102
bool allPointsAccepted() const
Definition: qevent.cpp:330
bool removePassiveGrabber(const QEventPoint &point, QObject *grabber)
Definition: qevent.cpp:443
const QPointingDevice * pointingDevice() const
Definition: qevent.cpp:354
void setTimestamp(quint64 timestamp) override
Definition: qevent.cpp:362
void clearPassiveGrabbers(const QEventPoint &point)
Definition: qevent.cpp:457
QList< QEventPoint > m_points
Definition: qevent.h:136
void setExclusiveGrabber(const QEventPoint &point, QObject *exclusiveGrabber)
Definition: qevent.cpp:393
QEventPoint * pointById(int id)
Definition: qevent.cpp:305
bool addPassiveGrabber(const QEventPoint &point, QObject *grabber)
Definition: qevent.cpp:428
QEventPoint & point(qsizetype i)
Definition: qevent.cpp:263
QObject * exclusiveGrabber(const QEventPoint &point) const
Definition: qevent.cpp:375
QList< QPointer< QObject > > passiveGrabbers(const QEventPoint &point) const
Definition: qevent.cpp:408
QPointerEvent(Type type, const QPointingDevice *dev, Qt::KeyboardModifiers modifiers=Qt::NoModifier, const QList< QEventPoint > &points={})
virtual void setAccepted(bool accepted) override
Definition: qevent.cpp:342
const QList< QEventPoint > & points() const
Definition: qevent.h:118
bool allPointsGrabbed() const
Definition: qevent.cpp:317
The QPointingDevice class describes a device from which mouse, touch or tablet events originate.
static QPointingDevicePrivate * get(QPointingDevice *q)
EventPointData * queryPointById(int id) const
The QRectF class defines a finite rectangle in the plane using floating point precision.
Definition: qrect.h:511
The QRect class defines a rectangle in the plane using integer precision.
Definition: qrect.h:59
The QRegion class specifies a clip region for a painter.
Definition: qregion.h:63
The QResizeEvent class contains event parameters for resize events. \inmodule QtGui.
Definition: qevent.h:612
QResizeEvent(const QSize &size, const QSize &oldSize)
Definition: qevent.cpp:1856
const QSize & size() const
Definition: qevent.h:620
The QScreen class is used to query screen properties. \inmodule QtGui.
Definition: qscreen.h:68
QScreenOrientationChangeEvent(QScreen *screen, Qt::ScreenOrientation orientation)
Definition: qevent.cpp:4816
The QScrollEvent class is sent when scrolling.
Definition: qevent.h:1085
ScrollState scrollState() const
Definition: qevent.h:1102
QPointF contentPos() const
Definition: qevent.h:1100
QScrollEvent(const QPointF &contentPos, const QPointF &overshoot, ScrollState scrollState)
Definition: qevent.cpp:4774
QPointF overshootDistance() const
Definition: qevent.h:1101
The QScrollPrepareEvent class is sent in preparation of scrolling.
Definition: qevent.h:1058
void setViewportSize(const QSizeF &size)
Definition: qevent.cpp:4711
void setContentPos(const QPointF &pos)
Definition: qevent.cpp:4731
void setContentPosRange(const QRectF &rect)
Definition: qevent.cpp:4721
QScrollPrepareEvent(const QPointF &startPos)
Definition: qevent.cpp:4671
QPointF contentPos() const
Definition: qevent.h:1070
QRectF contentPosRange() const
Definition: qevent.h:1069
QSizeF viewportSize() const
Definition: qevent.h:1068
The QShortcutEvent class provides an event which is generated when the user presses a key combination...
A base class for pointer events containing a single point, such as mouse events.
Definition: qevent.h:140
Qt::MouseButton m_button
Definition: qevent.h:178
QPointF globalPosition() const
Definition: qevent.h:154
Qt::MouseEventSource m_source
Definition: qevent.h:180
QPointF position() const
Definition: qevent.h:150
quint16 m_invertedScrolling
Definition: qevent.h:193
bool isEndEvent() const override
Definition: qevent.cpp:626
bool isUpdateEvent() const override
Definition: qevent.cpp:616
Qt::MouseButtons m_mouseState
Definition: qevent.h:179
QSinglePointEvent(Type type, const QPointingDevice *dev, const QEventPoint &point, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::MouseEventSource source)
quint16 m_doubleClick
Definition: qevent.h:190
bool isBeginEvent() const override
Definition: qevent.cpp:604
QPointF scenePosition() const
Definition: qevent.h:152
Qt::MouseButton button() const
Definition: qevent.h:147
Qt::MouseButtons buttons() const
Definition: qevent.h:148
quint16 m_phase
Definition: qevent.h:192
The QSizeF class defines the size of a two-dimensional object using floating point precision.
Definition: qsize.h:235
constexpr qreal width() const noexcept
Definition: qsize.h:349
constexpr bool isEmpty() const noexcept
Definition: qsize.h:343
constexpr qreal height() const noexcept
Definition: qsize.h:352
The QSize class defines the size of a two-dimensional object using integer point precision.
Definition: qsize.h:55
QStatusTipEvent(const QString &tip)
Definition: qevent.cpp:3491
The QString class provides a Unicode character string.
Definition: qstring.h:388
bool isEmpty() const
Definition: qstring.h:1216
The QTimerEvent class contains parameters that describe a timer event.
Definition: qcoreevent.h:367
QToolBarChangeEvent(bool t)
Definition: qevent.cpp:3785
The QTouchEvent class contains parameters that describe a touch event.
Definition: qevent.h:1020
bool isEndEvent() const override
Definition: qevent.cpp:4625
bool isBeginEvent() const override
Definition: qevent.cpp:4607
bool isUpdateEvent() const override
Definition: qevent.cpp:4616
QTouchEvent(QEvent::Type eventType, const QPointingDevice *device=nullptr, Qt::KeyboardModifiers modifiers=Qt::NoModifier, const QList< QEventPoint > &touchPoints={})
Definition: qevent.cpp:4565
QEventPoint::States m_touchPointStates
Definition: qevent.h:1053
The QUrl class provides a convenient interface for working with URLs.
Definition: qurl.h:130
The QVariant class acts like a union for the most common Qt data types.
Definition: qvariant.h:95
The QVector2D class represents a vector or vertex in 2D space.
Definition: qvectornd.h:62
constexpr QPointF toPointF() const noexcept
Definition: qvectornd.h:674
QWindowStateChangeEvent(Qt::WindowStates oldState, bool isOverride=false)
Definition: qevent.cpp:4408
bool isOverride() const
Definition: qevent.cpp:4415
float rotation
QString text
[meta data]
QPushButton * button
[2]
double e
rect
[4]
else
Definition: ftgrays.c:1658
QHighDpiScaling::Point position(T, QHighDpiScaling::Point::Kind)
@ Shortcut
Definition: qtestkeyboard.h:73
Definition: qnamespace.h:55
InputMethodQuery
Definition: qnamespace.h:1380
@ ImInputItemClipRectangle
Definition: qnamespace.h:1397
@ ImHints
Definition: qnamespace.h:1389
QTextStream & hex(QTextStream &stream)
MouseButton
Definition: qnamespace.h:81
@ NoButton
Definition: qnamespace.h:82
QTextStream & showbase(QTextStream &stream)
MouseEventSource
Definition: qnamespace.h:1703
@ MouseEventNotSynthesized
Definition: qnamespace.h:1704
ScreenOrientation
Definition: qnamespace.h:296
QTextStream & noshowbase(QTextStream &stream)
@ Key_AltGr
Definition: qnamespace.h:760
@ Key_Shift
Definition: qnamespace.h:704
@ Key_Control
Definition: qnamespace.h:705
@ Key_Alt
Definition: qnamespace.h:707
@ Key_Meta
Definition: qnamespace.h:706
QTextStream & dec(QTextStream &stream)
@ ShiftModifier
Definition: qnamespace.h:1075
@ ControlModifier
Definition: qnamespace.h:1076
@ MetaModifier
Definition: qnamespace.h:1078
@ GroupSwitchModifier
Definition: qnamespace.h:1080
@ KeypadModifier
Definition: qnamespace.h:1079
@ NoModifier
Definition: qnamespace.h:1074
@ AltModifier
Definition: qnamespace.h:1077
DropAction
Definition: qnamespace.h:1484
@ IgnoreAction
Definition: qnamespace.h:1490
ApplicationState
Definition: qnamespace.h:287
NativeGestureType
Definition: qnamespace.h:1663
ScrollPhase
Definition: qnamespace.h:1695
@ ScrollBegin
Definition: qnamespace.h:1697
@ ScrollUpdate
Definition: qnamespace.h:1698
@ ScrollMomentum
Definition: qnamespace.h:1700
@ ScrollEnd
Definition: qnamespace.h:1699
@ NoMouseEventFlag
Definition: qnamespace.h:1711
@ MouseEventCreatedDoubleClick
Definition: qnamespace.h:1712
FocusReason
Definition: qnamespace.h:1360
action
Definition: devices.py:78
set set set set set set set macro pixldst1 abits if abits op else op endif endm macro pixldst2 abits if abits op else op endif endm macro pixldst4 abits if abits op else op endif endm macro pixldst0 abits op endm macro pixldst3 mem_operand op endm macro pixldst30 mem_operand op endm macro pixldst abits if abits elseif abits elseif abits elseif abits elseif abits pixldst0 abits else pixldst0 abits pixldst0 abits pixldst0 abits pixldst0 abits endif elseif abits else pixldst0 abits pixldst0 abits endif elseif abits else error unsupported bpp *numpix else pixst endif endm macro vuzp8 reg2 vuzp d d &reg2 endm macro vzip8 reg2 vzip d d &reg2 endm macro pixdeinterleave basereg basereg basereg basereg basereg endif endm macro pixinterleave basereg basereg basereg basereg basereg endif endm macro PF boost_increment endif if endif PF tst PF addne PF subne PF cmp ORIG_W if endif if endif if endif PF subge ORIG_W PF subges if endif if endif if endif endif endm macro cache_preload_simple endif if dst_r_bpp pld[DST_R, #(PREFETCH_DISTANCE_SIMPLE *dst_r_bpp/8)] endif if mask_bpp pld endif[MASK, #(PREFETCH_DISTANCE_SIMPLE *mask_bpp/8)] endif endif endm macro ensure_destination_ptr_alignment process_pixblock_tail_head if beq irp skip1 beq endif SRC MASK if dst_r_bpp DST_R else add endif PF add sub src_basereg pixdeinterleave mask_basereg pixdeinterleave dst_r_basereg process_pixblock_head pixblock_size cache_preload_simple process_pixblock_tail pixinterleave dst_w_basereg irp beq endif process_pixblock_tail_head tst beq irp if pixblock_size chunk_size tst beq pixld SRC pixld MASK if DST_R else pixld DST_R endif if
@ Wheel
#define Q_FALLTHROUGH()
#define Q_UNLIKELY(x)
#define QT_WARNING_POP
#define QT_WARNING_DISABLE_DEPRECATED
#define QT_WARNING_PUSH
EGLOutputLayerEXT EGLint EGLAttrib value
bool qFuzzyIsNull(qfloat16 f) noexcept
Definition: qfloat16.h:249
bool qIsNull(qfloat16 f) noexcept
Definition: qfloat16.h:254
unsigned int quint32
Definition: qglobal.h:288
unsigned short quint16
Definition: qglobal.h:286
QT_END_INCLUDE_NAMESPACE typedef double qreal
Definition: qglobal.h:341
unsigned long long quint64
Definition: qglobal.h:299
ptrdiff_t qsizetype
Definition: qglobal.h:308
unsigned int uint
Definition: qglobal.h:334
#define qWarning
Definition: qlogging.h:179
GLenum GLuint id
[6]
Definition: qopengl.h:270
GLenum type
Definition: qopengl.h:270
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat z
GLuint64 key
GLboolean GLboolean GLboolean GLboolean a
[7]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLenum GLenum GLsizei count
GLenum src
GLbitfield flags
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLint GLint GLint GLint GLint GLint GLint GLbitfield mask
GLsizei GLsizei GLchar * source
GLfixed GLfixed GLint GLint GLfixed points
Definition: qopenglext.h:5206
GLenum query
Definition: qopenglext.h:2738
GLdouble GLdouble t
[9]
Definition: qopenglext.h:243
GLdouble s
[6]
Definition: qopenglext.h:235
GLfloat GLfloat p
[1]
Definition: qopenglext.h:12698
#define Q_ASSERT(cond)
Definition: qrandom.cpp:84
QScreen * screen
[1]
Definition: main.cpp:76
QFile file
[0]
QUrl url("http://www.example.com/List of holidays.xml")
[0]
QObject::connect nullptr
setDropAction(proposedAction())
[0]
QAction * at
QNetworkAccessManager manager
Definition: moc.h:48
QRhiShaderResourceBinding bindings[2]
Definition: texuploads.cpp:72
virtual HRESULT STDMETHODCALLTYPE Close(void)=0
virtual HRESULT STDMETHODCALLTYPE Move(enum TextUnit unit, int count, __RPC__out int *pRetVal)=0