qskinny/src/controls/QskScrollView.h

67 lines
2.0 KiB
C
Raw Normal View History

2017-07-21 16:21:34 +00:00
/******************************************************************************
* QSkinny - Copyright (C) 2016 Uwe Rathmann
2023-04-06 07:23:37 +00:00
* SPDX-License-Identifier: BSD-3-Clause
2017-07-21 16:21:34 +00:00
*****************************************************************************/
#ifndef QSK_SCROLL_VIEW_H
#define QSK_SCROLL_VIEW_H
2020-03-10 15:09:35 +00:00
#include "QskScrollBox.h"
2017-07-21 16:21:34 +00:00
2020-03-10 15:09:35 +00:00
class QSK_EXPORT QskScrollView : public QskScrollBox
2017-07-21 16:21:34 +00:00
{
Q_OBJECT
Q_PROPERTY( Qt::ScrollBarPolicy verticalScrollBarPolicy READ verticalScrollBarPolicy
WRITE setVerticalScrollBarPolicy NOTIFY verticalScrollBarPolicyChanged FINAL )
Q_PROPERTY( Qt::ScrollBarPolicy horizontalScrollBarPolicy READ horizontalScrollBarPolicy
WRITE setHorizontalScrollBarPolicy NOTIFY horizontalScrollBarPolicyChanged FINAL )
2020-03-10 15:09:35 +00:00
using Inherited = QskScrollBox;
2017-07-21 16:21:34 +00:00
2018-08-03 06:15:28 +00:00
public:
2017-07-21 16:21:34 +00:00
QSK_SUBCONTROLS( Panel, Viewport,
HorizontalScrollBar, HorizontalScrollHandle,
VerticalScrollBar, VerticalScrollHandle )
QSK_STATES( Pressed )
2017-07-21 16:21:34 +00:00
QskScrollView( QQuickItem* parent = nullptr );
2018-07-31 15:32:25 +00:00
~QskScrollView() override;
2017-07-21 16:21:34 +00:00
void setVerticalScrollBarPolicy( Qt::ScrollBarPolicy );
Qt::ScrollBarPolicy verticalScrollBarPolicy() const;
void setHorizontalScrollBarPolicy( Qt::ScrollBarPolicy );
Qt::ScrollBarPolicy horizontalScrollBarPolicy() const;
2020-03-10 15:09:35 +00:00
Qt::Orientations scrollableOrientations() const;
2017-07-21 16:21:34 +00:00
bool isScrolling( Qt::Orientation ) const;
QskAspect::States scrollHandleStates( Qt::Orientation ) const;
2017-07-21 16:21:34 +00:00
2020-03-10 15:09:35 +00:00
QRectF viewContentsRect() const override;
QskAnimationHint flickHint() const override;
2017-07-21 16:21:34 +00:00
2018-08-03 06:15:28 +00:00
Q_SIGNALS:
2017-07-21 16:21:34 +00:00
void verticalScrollBarPolicyChanged();
void horizontalScrollBarPolicyChanged();
2018-08-03 06:15:28 +00:00
protected:
2018-07-31 15:32:25 +00:00
void mouseMoveEvent( QMouseEvent* ) override;
void mousePressEvent( QMouseEvent* ) override;
void mouseReleaseEvent( QMouseEvent* ) override;
void mouseUngrabEvent() override;
2017-07-21 16:21:34 +00:00
#ifndef QT_NO_WHEELEVENT
QPointF scrollOffset( const QWheelEvent* ) const override;
2017-07-21 16:21:34 +00:00
#endif
2018-08-03 06:15:28 +00:00
private:
2017-07-21 16:21:34 +00:00
class PrivateData;
std::unique_ptr< PrivateData > m_data;
};
#endif