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
qabstractscrollarea_p.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 QABSTRACTSCROLLAREA_P_H
6#define QABSTRACTSCROLLAREA_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include <QtWidgets/private/qtwidgetsglobal_p.h>
20#include "private/qframe_p.h"
22#include <QtGui/private/qgridlayoutengine_p.h>
23
24QT_BEGIN_NAMESPACE
25
26#if QT_CONFIG(scrollarea)
27
28class QScrollBar;
29class QAbstractScrollAreaScrollBarContainer;
30
31class Q_AUTOTEST_EXPORT QAbstractScrollAreaPrivate: public QFramePrivate
32{
33 Q_DECLARE_PUBLIC(QAbstractScrollArea)
34
35public:
36 QAbstractScrollAreaPrivate();
37 ~QAbstractScrollAreaPrivate();
38
39 void replaceScrollBar(QScrollBar *scrollBar, Qt::Orientation orientation);
40
41 QHVContainer<QAbstractScrollAreaScrollBarContainer *> scrollBarContainers;
42 QScrollBar *hbar, *vbar;
43 Qt::ScrollBarPolicy vbarpolicy, hbarpolicy;
44
45 bool shownOnce;
46 bool inResize;
47 mutable QSize sizeHint;
48 QAbstractScrollArea::SizeAdjustPolicy sizeAdjustPolicy;
49
50 QWidget *viewport;
51 QWidget *cornerWidget;
52 QRect cornerPaintingRect;
53
54 int left, top, right, bottom; // viewport margin
55
56 int xoffset, yoffset;
57 QPoint overshoot;
58
59 void init();
60 void layoutChildren();
61 void layoutChildren_helper(bool *needHorizontalScrollbar, bool *needVerticalScrollbar);
62 virtual void scrollBarPolicyChanged(Qt::Orientation, Qt::ScrollBarPolicy) {}
63 virtual bool canStartScrollingAt( const QPoint &startPos ) const;
64
65 void flashScrollBars();
66 void setScrollBarTransient(QScrollBar *scrollBar, bool transient);
67
68 void _q_hslide(int);
69 void _q_vslide(int);
70 void _q_showOrHideScrollBars();
71
72 virtual QPoint contentsOffset() const;
73
74 inline bool viewportEvent(QEvent *event)
75 { return q_func()->viewportEvent(event); }
76 QScopedPointer<QObject> viewportFilter;
77
78 int defaultSingleStep() const;
79};
80
81class QAbstractScrollAreaFilter : public QObject
82{
83 Q_OBJECT
84public:
85 QAbstractScrollAreaFilter(QAbstractScrollAreaPrivate *p) : d(p)
86 { setObjectName(QLatin1StringView("qt_abstractscrollarea_filter")); }
87 bool eventFilter(QObject *o, QEvent *e) override
88 { return (o == d->viewport ? d->viewportEvent(e) : false); }
89private:
90 QAbstractScrollAreaPrivate *d;
91};
92
93class QBoxLayout;
94class QAbstractScrollAreaScrollBarContainer : public QWidget
95{
96public:
97 enum LogicalPosition { LogicalLeft = 1, LogicalRight = 2 };
98
99 QAbstractScrollAreaScrollBarContainer(Qt::Orientation orientation, QWidget *parent);
100 void addWidget(QWidget *widget, LogicalPosition position);
101 QWidgetList widgets(LogicalPosition position);
102 void removeWidget(QWidget *widget);
103
104 QScrollBar *scrollBar;
105 QBoxLayout *layout;
106private:
107 int scrollBarLayoutIndex() const;
108
109 Qt::Orientation orientation;
110};
111
112#endif // QT_CONFIG(scrollarea)
113
114QT_END_NAMESPACE
115
116#endif // QABSTRACTSCROLLAREA_P_H