QSkinny 0.8.0
C++/Qt UI toolkit
Loading...
Searching...
No Matches
QskScrollBox.h
1/******************************************************************************
2 * QSkinny - Copyright (C) The authors
3 * SPDX-License-Identifier: BSD-3-Clause
4 *****************************************************************************/
5
6#ifndef QSK_SCROLL_BOX_H
7#define QSK_SCROLL_BOX_H
8
9#include "QskControl.h"
10
11class QSK_EXPORT QskScrollBox : public QskControl
12{
13 Q_OBJECT
14
15 Q_PROPERTY( QPointF scrollPos READ scrollPos
16 WRITE setScrollPos NOTIFY scrollPosChanged FINAL )
17
18 Q_PROPERTY( Qt::Orientations flickableOrientations READ flickableOrientations
19 WRITE setFlickableOrientations NOTIFY flickableOrientationsChanged FINAL )
20
21 Q_PROPERTY( bool autoScrollFocusedItem READ autoScrollFocusItem
22 WRITE setAutoScrollFocusedItem NOTIFY autoScrollFocusedItemChanged FINAL )
23
24 using Inherited = QskControl;
25
26 public:
27 QskScrollBox( QQuickItem* parent = nullptr );
28 ~QskScrollBox() override;
29
30 void setAutoScrollFocusedItem( bool on );
31 bool autoScrollFocusItem() const;
32
33 void setFlickableOrientations( Qt::Orientations );
34 Qt::Orientations flickableOrientations() const;
35
36 int flickRecognizerTimeout() const;
37 void setFlickRecognizerTimeout( int timeout );
38
39 virtual QskAnimationHint flickHint() const = 0;
40
41 QPointF scrollPos() const;
42 QSizeF scrollableSize() const;
43
44 virtual QRectF viewContentsRect() const = 0;
45
46 Q_SIGNALS:
47 void scrolledTo( const QPointF& );
48 void scrollPosChanged();
49 void scrollableSizeChanged( const QSizeF& );
50
51 void autoScrollFocusedItemChanged( bool );
52 void flickableOrientationsChanged();
53
54 public Q_SLOTS:
55 void setScrollPos( const QPointF& );
56 void scrollTo( const QPointF& );
57
58 void ensureItemVisible( const QQuickItem* );
59 void ensureFocusItemVisible();
60 void ensureVisible( const QPointF& );
61 void ensureVisible( const QRectF& );
62
63 protected:
66
67 void gestureEvent( QskGestureEvent* ) override;
68
69#ifndef QT_NO_WHEELEVENT
70 void wheelEvent( QWheelEvent* ) override;
71 virtual QPointF scrollOffset( const QWheelEvent* ) const;
72#endif
73
74 void setScrollableSize( const QSizeF& );
75
76 private:
77 QPointF boundedScrollPos( const QPointF& ) const;
78 void onFocusItemChanged();
79 void connectWindow( const QQuickWindow*, bool on );
80
81 class PrivateData;
82 std::unique_ptr< PrivateData > m_data;
83};
84
85#endif
Base class of all controls.
Definition QskControl.h:23
virtual void geometryChangeEvent(QskGeometryChangeEvent *)
Definition QskItem.cpp:855
virtual void windowChangeEvent(QskWindowChangeEvent *)
Definition QskItem.cpp:851