5#ifndef QABSTRACTSCROLLAREA_P_H
6#define QABSTRACTSCROLLAREA_P_H
19#include <QtWidgets/private/qtwidgetsglobal_p.h>
20#include "private/qframe_p.h"
22#include <QtGui/private/qgridlayoutengine_p.h>
26#if QT_CONFIG(scrollarea)
29class QAbstractScrollAreaScrollBarContainer;
31class Q_AUTOTEST_EXPORT QAbstractScrollAreaPrivate:
public QFramePrivate
33 Q_DECLARE_PUBLIC(QAbstractScrollArea)
36 QAbstractScrollAreaPrivate();
37 ~QAbstractScrollAreaPrivate();
39 void replaceScrollBar(QScrollBar *scrollBar, Qt::Orientation orientation);
41 QHVContainer<QAbstractScrollAreaScrollBarContainer *> scrollBarContainers;
42 QScrollBar *hbar, *vbar;
43 Qt::ScrollBarPolicy vbarpolicy, hbarpolicy;
47 mutable QSize sizeHint;
48 QAbstractScrollArea::SizeAdjustPolicy sizeAdjustPolicy;
51 QWidget *cornerWidget;
52 QRect cornerPaintingRect;
54 int left, top, right, bottom;
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;
65 void flashScrollBars();
66 void setScrollBarTransient(QScrollBar *scrollBar,
bool transient);
70 void _q_showOrHideScrollBars();
72 virtual QPoint contentsOffset()
const;
74 inline bool viewportEvent(QEvent *event)
75 {
return q_func()->viewportEvent(event); }
76 QScopedPointer<QObject> viewportFilter;
78 int defaultSingleStep()
const;
81class QAbstractScrollAreaFilter :
public QObject
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); }
90 QAbstractScrollAreaPrivate *d;
94class QAbstractScrollAreaScrollBarContainer :
public QWidget
97 enum LogicalPosition { LogicalLeft = 1, LogicalRight = 2 };
99 QAbstractScrollAreaScrollBarContainer(Qt::Orientation orientation, QWidget *parent);
100 void addWidget(QWidget *widget, LogicalPosition position);
101 QWidgetList widgets(LogicalPosition position);
102 void removeWidget(QWidget *widget);
104 QScrollBar *scrollBar;
107 int scrollBarLayoutIndex()
const;
109 Qt::Orientation orientation;