QGIS API Documentation 3.99.0-Master (26c88405ac0)
Loading...
Searching...
No Matches
qgsscrollarea.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsscrollarea.h
3 ---------------
4 begin : March 2017
5 copyright : (C) 2017 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSSCROLLAREA_H
17#define QGSSCROLLAREA_H
18
19#include "qgis_gui.h"
20#include "qgis_sip.h"
21
22#include <QElapsedTimer>
23#include <QScrollArea>
24
25class ScrollAreaFilter;
26
42class GUI_EXPORT QgsScrollArea : public QScrollArea
43{
44 Q_OBJECT
45
46 public:
47
51 explicit QgsScrollArea( QWidget *parent SIP_TRANSFERTHIS = nullptr );
52
57 void scrollOccurred();
58
63 bool hasScrolled() const;
64
71
80 void setVerticalOnly( bool verticalOnly );
81
82 protected:
83 void wheelEvent( QWheelEvent *event ) override;
84 void resizeEvent( QResizeEvent *event ) override;
85
86 private:
87 bool mTimerActive = false;
88 QElapsedTimer mTimer;
89 ScrollAreaFilter *mFilter = nullptr;
90 bool mVerticalOnly = false;
91};
92
93#ifndef SIP_RUN
94
96
102class ScrollAreaFilter : public QObject
103{
104 Q_OBJECT
105 public:
106 ScrollAreaFilter( QgsScrollArea *parent = nullptr, QWidget *viewPort = nullptr );
107
108 protected:
109 bool eventFilter( QObject *obj, QEvent *event ) override;
110
111 private:
112 QgsScrollArea *mScrollAreaWidget = nullptr;
113 QWidget *mViewPort = nullptr;
114 QPoint mPreviousViewportCursorPos;
115 int mMoveDistanceThreshold = 0;
116
117 void addChild( QObject *child );
118 void removeChild( QObject *child );
119};
120
122
123#endif
124
125#endif // QGSSCROLLAREA_H
A QScrollArea subclass with improved scrolling behavior.
void setVerticalOnly(bool verticalOnly)
Sets whether the scroll area only applies vertical.
QgsScrollArea(QWidget *parent=nullptr)
Constructor for QgsScrollArea.
void resetHasScrolled()
Resets the hasScrolled() flag.
bool hasScrolled() const
Returns true if a scroll recently occurred within the QScrollArea or its child viewport().
void wheelEvent(QWheelEvent *event) override
void scrollOccurred()
Should be called when a scroll occurs on with the QScrollArea itself or its child viewport().
void resizeEvent(QResizeEvent *event) override
#define SIP_TRANSFERTHIS
Definition qgis_sip.h:53
#define SIP_SKIP
Definition qgis_sip.h:134