QAbstractScrollArea Class

QAbstractScrollArea 위젯은 온디맨드 스크롤 막대가 있는 스크롤 영역을 제공합니다. 더 보기...

Header: #include <QAbstractScrollArea>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
상속합니다: QFrame
상속받는 사람:

QAbstractItemView, QGraphicsView, QMdiArea, QPlainTextEdit, QScrollArea, 그리고 QTextEdit

공용 유형

enum SizeAdjustPolicy { AdjustIgnored, AdjustToContents, AdjustToContentsOnFirstShow }

속성

공용 함수

QAbstractScrollArea(QWidget *parent = nullptr)
virtual ~QAbstractScrollArea()
void addScrollBarWidget(QWidget *widget, Qt::Alignment alignment)
QWidget *cornerWidget() const
QScrollBar *horizontalScrollBar() const
Qt::ScrollBarPolicy horizontalScrollBarPolicy() const
QSize maximumViewportSize() const
QWidgetList scrollBarWidgets(Qt::Alignment alignment)
void setCornerWidget(QWidget *widget)
void setHorizontalScrollBar(QScrollBar *scrollBar)
void setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy)
void setSizeAdjustPolicy(QAbstractScrollArea::SizeAdjustPolicy policy)
void setVerticalScrollBar(QScrollBar *scrollBar)
void setVerticalScrollBarPolicy(Qt::ScrollBarPolicy)
void setViewport(QWidget *widget)
virtual void setupViewport(QWidget *viewport)
QAbstractScrollArea::SizeAdjustPolicy sizeAdjustPolicy() const
QScrollBar *verticalScrollBar() const
Qt::ScrollBarPolicy verticalScrollBarPolicy() const
QWidget *viewport() const

재구현된 공용 함수

virtual QSize minimumSizeHint() const override
virtual QSize sizeHint() const override

보호된 함수

virtual void scrollContentsBy(int dx, int dy)
void setViewportMargins(const QMargins &margins)
void setViewportMargins(int left, int top, int right, int bottom)
virtual bool viewportEvent(QEvent *event)
QMargins viewportMargins() const
virtual QSize viewportSizeHint() const

재구현된 보호 함수

virtual void contextMenuEvent(QContextMenuEvent *e) override
virtual void dragEnterEvent(QDragEnterEvent *event) override
virtual void dragLeaveEvent(QDragLeaveEvent *event) override
virtual void dragMoveEvent(QDragMoveEvent *event) override
virtual void dropEvent(QDropEvent *event) override
virtual bool event(QEvent *event) override
virtual void keyPressEvent(QKeyEvent *e) override
virtual void mouseDoubleClickEvent(QMouseEvent *e) override
virtual void mouseMoveEvent(QMouseEvent *e) override
virtual void mousePressEvent(QMouseEvent *e) override
virtual void mouseReleaseEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *event) override
virtual void resizeEvent(QResizeEvent *event) override
virtual void wheelEvent(QWheelEvent *e) override

상세 설명

QAbstractScrollArea는 스크롤 영역의 저수준 추상화입니다. 이 영역은 뷰포트라는 중앙 위젯을 제공하며, 여기서 영역의 콘텐츠가 스크롤됩니다(즉, 콘텐츠의 보이는 부분이 뷰포트에 렌더링됩니다).

뷰포트 옆에는 세로 스크롤 막대가 있고 그 아래에는 가로 스크롤 막대가 있습니다. 모든 영역 콘텐츠가 뷰포트에 맞으면 스크롤 막대의 Qt::ScrollBarPolicy 에 따라 각 스크롤 막대를 표시하거나 숨길 수 있습니다. 스크롤 막대가 숨겨지면 뷰포트가 확장되어 사용 가능한 모든 공간을 차지합니다. 스크롤 막대가 다시 표시되면 스크롤 막대를 위한 공간을 확보하기 위해 뷰포트가 축소됩니다.

뷰포트 주위에 여백 영역을 예약할 수 있습니다( setViewportMargins() 참조). 이 기능은 주로 스크롤 영역 위나 옆에 QHeaderView 위젯을 배치하는 데 사용됩니다. QAbstractScrollArea의 서브클래스는 여백을 구현해야 합니다.

QAbstractScrollArea를 상속할 때는 다음을 수행해야 합니다:

  • 범위, 값, 페이지 단계를 설정하고 스크롤 막대의 움직임을 추적하여 스크롤 막대를 제어합니다.
  • 스크롤 막대의 값에 따라 뷰포트에 영역의 내용을 그립니다.
  • viewportEvent()에서 뷰포트에 수신된 이벤트, 특히 크기 조정 이벤트를 처리합니다.
  • 모든 그리기 작업이 뷰포트에서 이루어지므로 update() 대신 viewport->update() 를 사용하여 뷰포트의 내용을 업데이트합니다.

스크롤 막대 정책이 Qt::ScrollBarAsNeeded (기본값)인 경우 QAbstractScrollArea는 0이 아닌 스크롤 범위를 제공할 때 스크롤 막대를 표시하고 그렇지 않으면 숨깁니다.

뷰포트가 크기 조정 이벤트를 수신하거나 콘텐츠의 크기가 변경될 때마다 스크롤 막대와 뷰포트를 업데이트해야 합니다. 스크롤 막대 값이 변경될 때 뷰포트도 업데이트해야 합니다. 스크롤 막대의 초기 값은 영역에 새 콘텐츠가 들어올 때 설정되는 경우가 많습니다.

간단한 예를 들어 QWidget 을 스크롤할 수 있는 스크롤 영역을 구현해 보겠습니다. 위젯을 뷰포트의 자식으로 만들면 위젯의 어느 부분을 그릴지 계산할 필요 없이 QWidget::move()로 위젯을 간단히 이동할 수 있습니다. 영역 내용이나 뷰포트 크기가 변경되면 다음을 수행합니다:

    QSize areaSize = viewport()->size();
    QSize  widgetSize = widget->size();

    verticalScrollBar()->setPageStep(areaSize.height());
    horizontalScrollBar()->setPageStep(areaSize.width());
    verticalScrollBar()->setRange(0, widgetSize.height() - areaSize.height());
    horizontalScrollBar()->setRange(0, widgetSize.width() - areaSize.width());
    updateWidgetPosition();

스크롤 막대의 값이 변경되면 위젯 위치를 업데이트해야 합니다. 즉, 뷰포트에서 위젯을 그릴 부분을 찾아야 합니다:

    int hvalue = horizontalScrollBar()->value();
    int vvalue = verticalScrollBar()->value();
    QPoint topLeft = viewport()->rect().topLeft();

    widget->move(topLeft.x() - hvalue, topLeft.y() - vvalue);

스크롤 막대 움직임을 추적하려면 가상 함수 scrollContentsBy()를 다시 구현합니다. 스크롤 동작을 미세 조정하려면 스크롤 막대의 QAbstractSlider::actionTriggered() 신호에 연결하고 QAbstractSlider::sliderPosition 을 원하는 대로 조정합니다.

편의를 위해 QAbstractScrollArea는 모든 뷰포트 이벤트를 가상 viewportEvent() 핸들러에서 사용할 수 있도록 합니다. QWidget 의 특수 핸들러는 적절한 경우 뷰포트 이벤트에 리매핑됩니다. 리매핑된 특수 핸들러는 다음과 같습니다: paintEvent(), mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), wheelEvent(), dragEnterEvent(), dragMoveEvent(), dragLeaveEvent(), dropEvent(), contextMenuEvent(), resizeEvent().

QScrollAreaQAbstractScrollArea를 상속하는 는 모든 QWidget 에 대해 부드러운 스크롤을 제공합니다(즉, 위젯이 픽셀 단위로 스크롤됨). 보다 특수한 동작이 필요한 경우에만 QAbstractScrollArea를 서브 클래스하면 됩니다. 예를 들어 영역의 전체 콘텐츠가 QWidget 에 그리기에 적합하지 않거나 부드러운 스크롤을 원하지 않는 경우에 해당됩니다.

QScrollArea참조하세요 .

멤버 유형 문서

enum QAbstractScrollArea::SizeAdjustPolicy

이 열거형은 뷰포트의 크기가 변경될 때 QAbstractScrollArea 의 크기 힌트가 어떻게 조정되어야 하는지를 지정합니다.

Constant설명
QAbstractScrollArea::AdjustIgnored0스크롤 영역이 이전과 같이 작동하며 아무런 조정도 하지 않습니다.
QAbstractScrollArea::AdjustToContents2스크롤 영역이 항상 뷰포트에 맞게 조정됩니다.
QAbstractScrollArea::AdjustToContentsOnFirstShow1스크롤 영역이 처음 표시될 때 뷰포트에 맞게 조정됩니다.

속성 문서

horizontalScrollBarPolicy : Qt::ScrollBarPolicy

이 속성은 가로 스크롤 막대에 대한 정책을 보유합니다.

기본 정책은 Qt::ScrollBarAsNeeded 입니다.

액세스 함수입니다:

Qt::ScrollBarPolicy horizontalScrollBarPolicy() const
void setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy)

verticalScrollBarPolicy참조하세요 .

sizeAdjustPolicy : SizeAdjustPolicy

이 속성은 뷰포트의 크기가 변경될 때 스크롤 영역의 크기가 어떻게 변경되는지 설명하는 정책을 보유합니다.

기본 정책은 QAbstractScrollArea::AdjustIgnored 입니다. 이 속성을 변경하면 실제로 스크롤 영역의 크기가 조정될 수 있습니다.

함수 액세스:

QAbstractScrollArea::SizeAdjustPolicy sizeAdjustPolicy() const
void setSizeAdjustPolicy(QAbstractScrollArea::SizeAdjustPolicy policy)

verticalScrollBarPolicy : Qt::ScrollBarPolicy

이 속성은 세로 스크롤 막대에 대한 정책을 보유합니다.

기본 정책은 Qt::ScrollBarAsNeeded 입니다.

액세스 함수입니다:

Qt::ScrollBarPolicy verticalScrollBarPolicy() const
void setVerticalScrollBarPolicy(Qt::ScrollBarPolicy)

horizontalScrollBarPolicy참조하세요 .

멤버 함수 문서

[explicit] QAbstractScrollArea::QAbstractScrollArea(QWidget *parent = nullptr)

뷰포트를 생성합니다.

parent 인수는 QWidget 생성자로 전송됩니다.

[virtual noexcept] QAbstractScrollArea::~QAbstractScrollArea()

뷰포트를 파괴합니다.

void QAbstractScrollArea::addScrollBarWidget(QWidget *widget, Qt::Alignment alignment)

alignment 에서 지정한 위치에 widget 을 스크롤 막대 위젯으로 추가합니다.

스크롤 막대 위젯은 가로 또는 세로 스크롤 막대 옆에 표시되며 양쪽에 배치할 수 있습니다. 스크롤 막대 위젯을 항상 표시하려면 해당 스크롤 막대에 대한 scrollBarPolicy를 AlwaysOn 로 설정하세요.

alignment 는 가로 스크롤 바에 매핑되는 Qt::Alignleft 와 Qt::AlignRight, 또는 세로 스크롤 바에 매핑되는 Qt::AlignTopQt::AlignBottom 중 하나여야 합니다.

스크롤 막대 위젯은 위젯의 부모를 다시 지정하거나 위젯을 삭제하여 제거할 수 있습니다. QWidget::hide ()를 사용하여 위젯을 숨길 수도 있습니다.

스크롤 막대 위젯은 현재 스타일의 스크롤 막대 지오메트리에 맞게 크기가 조정됩니다. 다음은 가로 스크롤 막대에 있는 스크롤 막대 위젯의 경우를 설명합니다:

위젯의 높이가 스크롤 막대의 높이와 일치하도록 설정됩니다. 위젯의 너비를 제어하려면 QWidget::setMinimumWidthQWidget::setMaximumWidth 을 사용하거나 QWidget::sizeHint()를 구현하고 가로 크기 정책을 설정하세요. 정사각형 위젯을 원하면 QStyle::pixelMetric(QStyle::PM_ScrollBarExtent)를 호출하여 너비를 이 값으로 설정합니다.

scrollBarWidgets()도 참조하세요 .

[override virtual protected] void QAbstractScrollArea::contextMenuEvent(QContextMenuEvent *e)

다시 구현합니다: QWidget::contextMenuEvent(QContextMenuEvent * 이벤트).

이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 viewport() 위젯에 대한 컨텍스트 메뉴 이벤트를 수신할 수 있습니다. 이벤트는 e 에 전달됩니다.

QWidget::contextMenuEvent()도 참조하세요 .

QWidget *QAbstractScrollArea::cornerWidget() const

두 스크롤 막대 사이의 모서리에 있는 위젯을 반환합니다.

기본적으로 모서리 위젯은 존재하지 않습니다.

setCornerWidget()도 참조하세요 .

[override virtual protected] void QAbstractScrollArea::dragEnterEvent(QDragEnterEvent *event)

다시 구현합니다: QWidget::dragEnterEvent(QDragEnterEvent * 이벤트).

이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 viewport() 위젯에 대한 드래그 입력 이벤트( event 로 전달)를 수신할 수 있습니다.

QWidget::dragEnterEvent()도 참조하세요 .

[override virtual protected] void QAbstractScrollArea::dragLeaveEvent(QDragLeaveEvent *event)

다시 구현합니다: QWidget::dragLeaveEvent(QDragLeaveEvent * 이벤트).

이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 viewport() 위젯에 대한 드래그 나가기 이벤트( event 로 전달)를 수신할 수 있습니다.

QWidget::dragLeaveEvent()도 참조하세요 .

[override virtual protected] void QAbstractScrollArea::dragMoveEvent(QDragMoveEvent *event)

다시 구현합니다: QWidget::dragMoveEvent(QDragMoveEvent * 이벤트).

이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 viewport() 위젯에 대한 드래그 이동 이벤트( event 로 전달)를 수신할 수 있습니다.

QWidget::dragMoveEvent()도 참조하세요 .

[override virtual protected] void QAbstractScrollArea::dropEvent(QDropEvent *event)

다시 구현합니다: QWidget::dropEvent(QDropEvent * 이벤트).

이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 viewport() 위젯에 대한 드롭 이벤트( event 로 전달)를 수신할 수 있습니다.

QWidget::dropEvent()도 참조하세요 .

[override virtual protected] bool QAbstractScrollArea::event(QEvent *event)

다시 구현합니다: QFrame::event(QEvent *e).

이것은 QAbstractScrollArea 위젯의 메인 이벤트 핸들러입니다( 스크롤 영역 viewport()이아님 ). 지정된 event 은 일반 이벤트 객체로, 유형에 따라 적절한 클래스로 형변환해야 할 수 있습니다.

QEvent::type()도 참조하세요 .

QScrollBar *QAbstractScrollArea::horizontalScrollBar() const

가로 스크롤 바를 반환합니다.

setHorizontalScrollBar(), horizontalScrollBarPolicy, verticalScrollBar()도 참조하세요 .

[override virtual protected] void QAbstractScrollArea::keyPressEvent(QKeyEvent *e)

다시 구현합니다: QWidget::keyPressEvent(QKeyEvent * 이벤트).

이 함수는 키 누름이 발생하면 키 이벤트 e 와 함께 호출됩니다. 페이지업, 페이지다운, 위, 아래, 왼쪽, 오른쪽을 처리하고 다른 모든 키 누름은 무시합니다.

QSize QAbstractScrollArea::maximumViewportSize() const

스크롤 막대에 유효한 스크롤 범위가 없는 것처럼 뷰포트의 크기를 반환합니다.

[override virtual] QSize QAbstractScrollArea::minimumSizeHint() const

속성에 대한 액세스 함수를 다시 구현합니다: QWidget::minimumSizeHint.

[override virtual protected] void QAbstractScrollArea::mouseDoubleClickEvent(QMouseEvent *e)

다시 구현합니다: QWidget::mouseDoubleClickEvent(QMouseEvent * 이벤트).

이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 viewport() 위젯에 대한 마우스 더블 클릭 이벤트를 수신할 수 있습니다. 이벤트는 e 에 전달됩니다.

QWidget::mouseDoubleClickEvent()도 참조하세요 .

[override virtual protected] void QAbstractScrollArea::mouseMoveEvent(QMouseEvent *e)

다시 구현합니다: QWidget::mouseMoveEvent(QMouseEvent * 이벤트).

이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 viewport() 위젯에 대한 마우스 이동 이벤트를 수신할 수 있습니다. 이벤트는 e 에 전달됩니다.

QWidget::mouseMoveEvent()도 참조하세요 .

[override virtual protected] void QAbstractScrollArea::mousePressEvent(QMouseEvent *e)

다시 구현합니다: QWidget::mousePressEvent(QMouseEvent * 이벤트).

이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 viewport() 위젯에 대한 마우스 누르기 이벤트를 수신할 수 있습니다. 이벤트는 e 에 전달됩니다.

기본 구현은 기본 팝업 처리를 위해 QWidget::mousePressEvent()를 호출합니다.

QWidget::mousePressEvent()도 참조하세요 .

[override virtual protected] void QAbstractScrollArea::mouseReleaseEvent(QMouseEvent *e)

다시 구현합니다: QWidget::mouseReleaseEvent(QMouseEvent * 이벤트).

이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 viewport() 위젯에 대한 마우스 릴리스 이벤트를 수신할 수 있습니다. 이벤트는 e 에 전달됩니다.

QWidget::mouseReleaseEvent()도 참조하세요 .

[override virtual protected] void QAbstractScrollArea::paintEvent(QPaintEvent *event)

다시 구현합니다: QFrame::paintEvent(QPaintEvent *).

이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 viewport() 위젯에 대한 페인트 이벤트( event 로 전달)를 수신할 수 있습니다.

참고: QPainter 를 생성하는 경우 viewport() 에서 작동해야 합니다.

QWidget::paintEvent()도 참조하세요 .

[override virtual protected] void QAbstractScrollArea::resizeEvent(QResizeEvent *event)

다시 구현합니다: QWidget::resizeEvent(QResizeEvent * 이벤트).

이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 viewport() 위젯의 크기 조정 이벤트( event 로 전달)를 수신할 수 있습니다.

resizeEvent()가 호출될 때 뷰포트에는 이미 새 지오메트리가 있습니다: 새 크기는 QResizeEvent::size() 함수를 통해, 이전 크기는 QResizeEvent::oldSize() 함수를 통해 액세스할 수 있습니다.

QWidget::resizeEvent()도 참조하세요 .

QWidgetList QAbstractScrollArea::scrollBarWidgets(Qt::Alignment alignment)

현재 설정된 스크롤 막대 위젯의 목록을 반환합니다. alignment 네 가지 위치 플래그의 조합이 가능합니다.

addScrollBarWidget()도 참조하세요 .

[virtual protected] void QAbstractScrollArea::scrollContentsBy(int dx, int dy)

이 가상 핸들러는 dx, dy 에 의해 스크롤 막대가 움직일 때 호출되며, 따라서 뷰포트의 콘텐츠도 그에 따라 스크롤되어야 합니다.

기본 구현은 단순히 전체 viewport()에서 update()를 호출하며, 서브클래스는 최적화를 위해 이 핸들러를 재구현하거나 QScrollArea 처럼 콘텐츠 위젯을 이동시킬 수 있습니다. dxdy 매개변수는 편의를 위해 존재하며, 이는 클래스에서 얼마나 스크롤해야 하는지 알 수 있도록 하기 위한 것입니다(예: 픽셀 이동 시 유용). 이 값을 무시하고 스크롤 막대가 가리키는 위치로 직접 스크롤할 수도 있습니다.

프로그래밍 방식으로 스크롤하기 위해 이 함수를 호출하면 오류가 발생하므로 대신 스크롤 막대를 사용하세요(예: QScrollBar::setValue()를 직접 호출).

void QAbstractScrollArea::setCornerWidget(QWidget *widget)

두 스크롤 막대 사이의 모서리에 있는 위젯을 widget 로 설정합니다.

스크롤 막대 모드 중 하나 이상을 AlwaysOn 로 설정하는 것도 좋습니다.

nullptr 을 전달하면 모서리에 위젯이 표시되지 않습니다.

이전의 모든 모서리 위젯은 숨겨집니다.

같은 위젯을 다른 시간에 다른 위젯으로 setCornerWidget()을 호출할 수 있습니다.

다른 코너 위젯(또는 nullptr)을 설정한 후 별도로 위젯을 다시 부모로 지정하지 않는 한 스크롤 영역이 파괴되면 여기에 설정된 모든 위젯이 삭제됩니다.

새로 설정된 위젯은 현재 부모가 없어야 합니다.

기본적으로 코너 위젯은 존재하지 않습니다.

cornerWidget(), horizontalScrollBarPolicy, horizontalScrollBarPolicy참조하세요 .

void QAbstractScrollArea::setHorizontalScrollBar(QScrollBar *scrollBar)

기존 가로 스크롤 막대를 scrollBar 로 바꾸고 이전 스크롤 막대의 모든 슬라이더 속성을 새 스크롤 막대에 설정합니다. 그러면 이전 스크롤 막대는 삭제됩니다.

QAbstractScrollArea 는 이미 기본적으로 가로 및 세로 스크롤 막대를 제공합니다. 이 함수를 호출하여 기본 가로 스크롤 막대를 사용자 정의 스크롤 막대로 바꿀 수 있습니다.

horizontalScrollBar() 및 setVerticalScrollBar()도 참조하세요 .

void QAbstractScrollArea::setVerticalScrollBar(QScrollBar *scrollBar)

기존 세로 스크롤 막대를 scrollBar 로 바꾸고 이전 스크롤 막대의 모든 슬라이더 속성을 새 스크롤 막대에 설정합니다. 그러면 이전 스크롤 막대는 삭제됩니다.

QAbstractScrollArea 는 이미 기본적으로 세로 및 가로 스크롤 막대를 제공합니다. 이 함수를 호출하여 기본 세로 스크롤 막대를 사용자 정의 스크롤 막대로 바꿀 수 있습니다.

verticalScrollBar() 및 setHorizontalScrollBar()도 참조하세요 .

void QAbstractScrollArea::setViewport(QWidget *widget)

뷰포트를 주어진 widget 로 설정합니다. QAbstractScrollArea 은 주어진 widget 의 소유권을 갖습니다.

widgetnullptr 인 경우 QAbstractScrollArea 는 뷰포트에 새 QWidget 인스턴스를 할당합니다.

viewport()도 참조하세요 .

[protected] void QAbstractScrollArea::setViewportMargins(const QMargins &margins)

스크롤 영역 주위에 margins 을 설정합니다. 이는 행과 열이 '잠긴' 스프레드시트와 같은 애플리케이션에 유용합니다. 여백은 비워두고 사용하지 않는 영역에 위젯을 넣습니다.

기본적으로 모든 여백은 0입니다.

viewportMargins()도 참조하세요 .

[protected] void QAbstractScrollArea::setViewportMargins(int left, int top, int right, int bottom)

스크롤 영역 주변의 여백을 left, top, rightbottom 로 설정합니다. 이 기능은 행과 열이 '잠긴' 스프레드시트와 같은 애플리케이션에 유용합니다. 여백은 비워두고 사용하지 않는 영역에 위젯을 배치합니다.

이 함수는 QTreeViewQTableView 에서 자주 호출되므로 QAbstractScrollArea 서브클래스에서 여백을 구현해야 합니다. 또한 하위 클래스가 항목 보기에서 사용되는 경우 이 함수를 호출해서는 안 됩니다.

기본적으로 모든 여백은 0입니다.

viewportMargins()도 참조하세요 .

[virtual] void QAbstractScrollArea::setupViewport(QWidget *viewport)

이 슬롯은 setViewport(viewport)이 호출된 후 QAbstractScrollArea 에 의해 호출됩니다. QAbstractScrollArea 의 서브클래스에서 이 함수를 다시 구현하여 새로운 viewport 을 사용하기 전에 초기화하세요.

setViewport()도 참조하세요 .

[override virtual] QSize QAbstractScrollArea::sizeHint() const

재구현합니다: QFrame::sizeHint() const.

스크롤 영역의 sizeHint 프로퍼티를 반환합니다. 크기는 viewportSizeHint()에 필요한 경우 스크롤 막대를 위한 추가 공간을 더하여 결정됩니다.

QScrollBar *QAbstractScrollArea::verticalScrollBar() const

세로 스크롤 막대를 반환합니다.

setVerticalScrollBar(), verticalScrollBarPolicy, horizontalScrollBar()도 참조하세요 .

QWidget *QAbstractScrollArea::viewport() const

뷰포트 위젯을 반환합니다.

QScrollArea::widget() 함수를 사용하여 뷰포트 위젯의 콘텐츠를 검색할 수 있습니다.

setViewport() 및 QScrollArea::widget()도 참조하세요 .

[virtual protected] bool QAbstractScrollArea::viewportEvent(QEvent *event)

스크롤 영역의 메인 이벤트 핸들러( viewport() 위젯)입니다. 지정된 event 을 처리하며, 하위 클래스에서 호출하여 합리적인 기본 동작을 제공할 수 있습니다.

이벤트가 처리되었으므로 더 이상 처리할 필요가 없음을 이벤트 시스템에 알리기 위해 true 을 반환하고, 그렇지 않으면 이벤트가 더 전파되어야 함을 나타내기 위해 false 을 반환합니다.

이 함수는 서브클래스에서 다시 구현할 수 있지만, 대신 특수 이벤트 핸들러 중 하나를 사용하는 것이 좋습니다.

뷰포트 이벤트 전용 핸들러는 다음과 같습니다: paintEvent(), mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), wheelEvent(), dragEnterEvent(), dragMoveEvent(), dragLeaveEvent(), dropEvent(), contextMenuEvent(), resizeEvent() 등이 있습니다.

[protected] QMargins QAbstractScrollArea::viewportMargins() const

스크롤 영역 주변의 여백을 반환합니다. 기본적으로 모든 여백은 0입니다.

setViewportMargins()도 참조하세요 .

[virtual protected] QSize QAbstractScrollArea::viewportSizeHint() const

뷰포트에 권장되는 크기를 반환합니다. 기본 구현은 viewport()->sizeHint()를 반환합니다. 이 크기는 스크롤 막대가 표시되지 않은 뷰포트의 크기일 뿐이라는 점에 유의하세요.

[override virtual protected] void QAbstractScrollArea::wheelEvent(QWheelEvent *e)

다시 구현합니다: QWidget::wheelEvent(QWheelEvent * 이벤트).

이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 viewport() 위젯에 대한 휠 이벤트를 수신할 수 있습니다. 이벤트는 e 에 전달됩니다.

QWidget::wheelEvent()도 참조하세요 .

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.