File indexing completed on 2026-06-16 08:32:42
0001
0002
0003
0004
0005 #ifndef QABSTRACTSCROLLAREA_H
0006 #define QABSTRACTSCROLLAREA_H
0007
0008 #include <QtWidgets/qtwidgetsglobal.h>
0009 #include <QtWidgets/qframe.h>
0010
0011 QT_BEGIN_NAMESPACE
0012
0013
0014 #if QT_CONFIG(scrollarea)
0015
0016 class QMargins;
0017 class QScrollBar;
0018 class QAbstractScrollAreaPrivate;
0019
0020 class Q_WIDGETS_EXPORT QAbstractScrollArea : public QFrame
0021 {
0022 Q_OBJECT
0023
0024 Q_PROPERTY(Qt::ScrollBarPolicy verticalScrollBarPolicy READ verticalScrollBarPolicy
0025 WRITE setVerticalScrollBarPolicy)
0026 Q_PROPERTY(Qt::ScrollBarPolicy horizontalScrollBarPolicy READ horizontalScrollBarPolicy
0027 WRITE setHorizontalScrollBarPolicy)
0028 Q_PROPERTY(SizeAdjustPolicy sizeAdjustPolicy READ sizeAdjustPolicy WRITE setSizeAdjustPolicy)
0029
0030 public:
0031 explicit QAbstractScrollArea(QWidget *parent = nullptr);
0032 ~QAbstractScrollArea();
0033
0034 enum SizeAdjustPolicy {
0035 AdjustIgnored,
0036 AdjustToContentsOnFirstShow,
0037 AdjustToContents
0038 };
0039 Q_ENUM(SizeAdjustPolicy)
0040
0041 Qt::ScrollBarPolicy verticalScrollBarPolicy() const;
0042 void setVerticalScrollBarPolicy(Qt::ScrollBarPolicy);
0043 QScrollBar *verticalScrollBar() const;
0044 void setVerticalScrollBar(QScrollBar *scrollbar);
0045
0046 Qt::ScrollBarPolicy horizontalScrollBarPolicy() const;
0047 void setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy);
0048 QScrollBar *horizontalScrollBar() const;
0049 void setHorizontalScrollBar(QScrollBar *scrollbar);
0050
0051 QWidget *cornerWidget() const;
0052 void setCornerWidget(QWidget *widget);
0053
0054 void addScrollBarWidget(QWidget *widget, Qt::Alignment alignment);
0055 QWidgetList scrollBarWidgets(Qt::Alignment alignment);
0056
0057 QWidget *viewport() const;
0058 void setViewport(QWidget *widget);
0059 QSize maximumViewportSize() const;
0060
0061 QSize minimumSizeHint() const override;
0062
0063 QSize sizeHint() const override;
0064
0065 virtual void setupViewport(QWidget *viewport);
0066
0067 SizeAdjustPolicy sizeAdjustPolicy() const;
0068 void setSizeAdjustPolicy(SizeAdjustPolicy policy);
0069
0070 protected:
0071 QAbstractScrollArea(QAbstractScrollAreaPrivate &dd, QWidget *parent = nullptr);
0072 void setViewportMargins(int left, int top, int right, int bottom);
0073 void setViewportMargins(const QMargins &margins);
0074 QMargins viewportMargins() const;
0075
0076 bool eventFilter(QObject *, QEvent *) override;
0077 bool event(QEvent *) override;
0078 virtual bool viewportEvent(QEvent *);
0079
0080 void resizeEvent(QResizeEvent *) override;
0081 void paintEvent(QPaintEvent *) override;
0082 void mousePressEvent(QMouseEvent *) override;
0083 void mouseReleaseEvent(QMouseEvent *) override;
0084 void mouseDoubleClickEvent(QMouseEvent *) override;
0085 void mouseMoveEvent(QMouseEvent *) override;
0086 #if QT_CONFIG(wheelevent)
0087 void wheelEvent(QWheelEvent *) override;
0088 #endif
0089 #ifndef QT_NO_CONTEXTMENU
0090 void contextMenuEvent(QContextMenuEvent *) override;
0091 #endif
0092 #if QT_CONFIG(draganddrop)
0093 void dragEnterEvent(QDragEnterEvent *) override;
0094 void dragMoveEvent(QDragMoveEvent *) override;
0095 void dragLeaveEvent(QDragLeaveEvent *) override;
0096 void dropEvent(QDropEvent *) override;
0097 #endif
0098
0099 void keyPressEvent(QKeyEvent *) override;
0100
0101 virtual void scrollContentsBy(int dx, int dy);
0102
0103 virtual QSize viewportSizeHint() const;
0104
0105 private:
0106 Q_DECLARE_PRIVATE(QAbstractScrollArea)
0107 Q_DISABLE_COPY(QAbstractScrollArea)
0108 Q_PRIVATE_SLOT(d_func(), void _q_hslide(int))
0109 Q_PRIVATE_SLOT(d_func(), void _q_vslide(int))
0110 Q_PRIVATE_SLOT(d_func(), void _q_showOrHideScrollBars())
0111
0112 friend class QStyleSheetStyle;
0113 friend class QWidgetPrivate;
0114 };
0115
0116 #endif
0117
0118 QT_END_NAMESPACE
0119
0120 #endif