Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qscroller.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QSCROLLER_H
6#define QSCROLLER_H
7
8#include <QtWidgets/qtwidgetsglobal.h>
9#include <QtCore/QObject>
10#include <QtCore/QPointF>
11#include <QtWidgets/QScrollerProperties>
12
13class tst_QScroller;
14
16
17QT_BEGIN_NAMESPACE
18
19
20class QWidget;
22class QScrollerProperties;
23#ifndef QT_NO_GESTURES
25class QMouseFlickGestureRecognizer;
26#endif
27
28class Q_WIDGETS_EXPORT QScroller : public QObject
29{
30 Q_OBJECT
31 Q_PROPERTY(State state READ state NOTIFY stateChanged)
32 Q_PROPERTY(QScrollerProperties scrollerProperties READ scrollerProperties
33 WRITE setScrollerProperties NOTIFY scrollerPropertiesChanged)
34
35public:
36 enum State
37 {
38 Inactive,
39 Pressed,
40 Dragging,
41 Scrolling
42 };
43 Q_ENUM(State)
44
45 enum ScrollerGestureType
46 {
47 TouchGesture,
48 LeftMouseButtonGesture,
49 RightMouseButtonGesture,
50 MiddleMouseButtonGesture
51 };
52
53 enum Input
54 {
55 InputPress = 1,
56 InputMove,
57 InputRelease
58 };
59
60 static bool hasScroller(QObject *target);
61
62 static QScroller *scroller(QObject *target);
63 static const QScroller *scroller(const QObject *target);
64
65#ifndef QT_NO_GESTURES
66 static Qt::GestureType grabGesture(QObject *target, ScrollerGestureType gestureType = TouchGesture);
67 static Qt::GestureType grabbedGesture(QObject *target);
68 static void ungrabGesture(QObject *target);
69#endif
70
71 static QList<QScroller *> activeScrollers();
72
73 QObject *target() const;
74
75 State state() const;
76
77 bool handleInput(Input input, const QPointF &position, qint64 timestamp = 0);
78
79 void stop();
80 QPointF velocity() const;
81 QPointF finalPosition() const;
82 QPointF pixelPerMeter() const;
83
84 QScrollerProperties scrollerProperties() const;
85
86 void setSnapPositionsX( const QList<qreal> &positions );
87 void setSnapPositionsX( qreal first, qreal interval );
88 void setSnapPositionsY( const QList<qreal> &positions );
89 void setSnapPositionsY( qreal first, qreal interval );
90
91public Q_SLOTS:
92 void setScrollerProperties(const QScrollerProperties &prop);
93 void scrollTo(const QPointF &pos);
94 void scrollTo(const QPointF &pos, int scrollTime);
95 void ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin);
96 void ensureVisible(const QRectF &rect, qreal xmargin, qreal ymargin, int scrollTime);
97 void resendPrepareEvent();
98
99Q_SIGNALS:
100 void stateChanged(QScroller::State newstate);
101 void scrollerPropertiesChanged(const QScrollerProperties &);
102
103private:
104 QScrollerPrivate *d_ptr;
105
106 QScroller(QObject *target);
107 virtual ~QScroller();
108
109 Q_DISABLE_COPY(QScroller)
110 Q_DECLARE_PRIVATE(QScroller)
111
112 friend class ::tst_QScroller;
113#ifndef QT_NO_GESTURES
114 friend class QFlickGestureRecognizer;
115#endif
116};
117
118QT_END_NAMESPACE
119
120#endif // QSCROLLER_H
void timerEvent(QTimerEvent *e) override
This event handler can be reimplemented in a subclass to receive timer events for the object.
void scrollerBecameActive(Qt::KeyboardModifiers eventModifiers, Qt::MouseButtons eventButtons)
static PressDelayHandler * instance()
bool released(QEvent *e, bool scrollerWasActive, bool scrollerIsActive)
bool shouldEventBeIgnored(QEvent *) const
bool isDelaying() const
void pressed(QEvent *e, int delay)
void sendMouseEvent(QMouseEvent *me, int flags=0)
friend class QWidget
Definition qpainter.h:431
The QScroller class enables kinetic scrolling for any scrolling widget or graphics item.
Definition qscroller.h:29
static QMouseEvent * copyMouseEvent(QEvent *e)
#define qFGDebug
bool qt_sendSpontaneousEvent(QObject *, QEvent *)
#define QWIDGETSIZE_MAX
Definition qwidget.h:922
QScroller * scroller