QAbstractScrollArea Class
QAbstractScrollArea 위젯은 필요에 따라 표시되는 스크롤 막대가 있는 스크롤 영역을 제공합니다. 더 보기...
| 헤더: | #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 } |
속성
- horizontalScrollBarPolicy : Qt::ScrollBarPolicy
- sizeAdjustPolicy : SizeAdjustPolicy
- verticalScrollBarPolicy : Qt::ScrollBarPolicy
공개 함수
| 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를 상속할 때는 다음을 수행해야 합니다:
- 범위, 값, 페이지 단계(page step)를 설정하고 스크롤 막대의 이동을 추적하여 스크롤 막대를 제어해야 합니다.
- 스크롤 막대의 값에 따라 뷰포트에 영역의 내용을 그립니다.
- 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 )의 크기가 변경될 때 크기 힌트가 어떻게 조정되어야 하는지를 지정합니다.
| 상수 | 값 | 설명 |
|---|---|---|
QAbstractScrollArea::AdjustIgnored | 0 | 스크롤 영역은 이전과 동일하게 동작하며, 어떠한 조정도 수행하지 않습니다. |
QAbstractScrollArea::AdjustToContents | 2 | 스크롤 영역은 항상 뷰포트에 맞춰 조정됩니다. |
QAbstractScrollArea::AdjustToContentsOnFirstShow | 1 | 스크롤 영역은 처음 표시될 때 뷰포트에 맞춰 조정됩니다. |
속성 문서
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::AlignTop 및 Qt::AlignBottom 중 하나여야 합니다.
스크롤바 위젯은 위젯의 부모를 변경하거나 위젯을 삭제하여 제거할 수 있습니다. 또한 QWidget::hide()을 사용하여 위젯을 숨길 수도 있습니다.
스크롤 바 위젯은 현재 스타일의 스크롤 바 기하학적 구조에 맞게 크기가 조정됩니다. 다음은 가로 스크롤 바에 있는 스크롤 바 위젯의 경우를 설명합니다:
위젯의 높이는 스크롤 바의 높이와 일치하도록 설정됩니다. 위젯의 너비를 제어하려면 ` QWidget::setMinimumWidth ` 및 ` QWidget::setMaximumWidth`을 사용하거나, ` QWidget::sizeHint()`을 구현하여 수평 크기 정책을 설정하십시오. 정사각형 위젯을 원할 경우 ` QStyle::pixelMetric`(QStyle::PM_ScrollBarExtent)를 호출하고 너비를 이 값으로 설정하십시오.
scrollBarWidgets()도 참조하십시오 .
[override virtual protected] void QAbstractScrollArea::contextMenuEvent(QContextMenuEvent *e)
재구현: ` QWidget::contextMenuEvent(QContextMenuEvent *event)`.
이 이벤트 핸들러는 하위 클래스에서 재구현하여 ` viewport()` 위젯에 대한 컨텍스트 메뉴 이벤트를 수신할 수 있습니다. 이벤트는 ` e`를 통해 전달됩니다.
QWidget::contextMenuEvent()도 참조하십시오 .
QWidget *QAbstractScrollArea::cornerWidget() const
두 스크롤 바 사이의 모서리에 있는 위젯을 반환합니다.
기본적으로 모서리 위젯은 존재하지 않습니다.
setCornerWidget()도 참조하십시오 .
[override virtual protected] void QAbstractScrollArea::dragEnterEvent(QDragEnterEvent *event)
재구현 대상: QWidget::dragEnterEvent(QDragEnterEvent *event).
이 이벤트 핸들러는 하위 클래스에서 재구현하여, ` viewport()` 위젯에 대한 드래그 진입 이벤트(` event`를 통해 전달됨)를 수신할 수 있습니다.
QWidget::dragEnterEvent()도 참조하십시오 .
[override virtual protected] void QAbstractScrollArea::dragLeaveEvent(QDragLeaveEvent *event)
재구현: QWidget::dragLeaveEvent(QDragLeaveEvent *event).
이 이벤트 핸들러는 viewport() 위젯에 대한 드래그 이탈 이벤트( event 를 통해 전달됨)를 수신하기 위해 하위 클래스에서 재구현할 수 있습니다.
QWidget::dragLeaveEvent()도 참조하십시오 .
[override virtual protected] void QAbstractScrollArea::dragMoveEvent(QDragMoveEvent *event)
재구현 대상: QWidget::dragMoveEvent(QDragMoveEvent *event).
이 이벤트 핸들러는 하위 클래스에서 재구현하여, ` viewport()` 위젯에 대한 드래그 이동 이벤트(` event`를 통해 전달됨)를 수신할 수 있습니다.
QWidget::dragMoveEvent()도 참조하십시오 .
[override virtual protected] void QAbstractScrollArea::dropEvent(QDropEvent *event)
재구현: QWidget::dropEvent(QDropEvent *event).
이 이벤트 핸들러는 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 *event)를 재구현합니다.
이 함수는 키가 눌릴 때 키 이벤트 e 와 함께 호출됩니다. 이 함수는 PageUp, PageDown, Up, Down, Left, Right 키를 처리하고, 그 외의 모든 키 입력을 무시합니다.
QSize QAbstractScrollArea::maximumViewportSize() const
스크롤 막대에 유효한 스크롤 범위가 없는 것처럼 뷰포트의 크기를 반환합니다.
[override virtual] QSize QAbstractScrollArea::minimumSizeHint() const
QWidget::minimumSizeHint 속성에 대한 액세스 함수를 재구현합니다.
[override virtual protected] void QAbstractScrollArea::mouseDoubleClickEvent(QMouseEvent *e)
QWidget::mouseDoubleClickEvent(QMouseEvent *event)를 재구현합니다.
이 이벤트 핸들러는 하위 클래스에서 재구현하여 viewport() 위젯의 마우스 더블 클릭 이벤트를 수신할 수 있습니다. 이벤트는 e 를 통해 전달됩니다.
QWidget::mouseDoubleClickEvent()도 참조하십시오 .
[override virtual protected] void QAbstractScrollArea::mouseMoveEvent(QMouseEvent *e)
QWidget::mouseMoveEvent(QMouseEvent *event)를 재구현합니다.
이 이벤트 핸들러는 하위 클래스에서 재구현하여 viewport() 위젯에 대한 마우스 이동 이벤트를 수신할 수 있습니다. 이벤트는 e 로 전달됩니다.
QWidget::mouseMoveEvent()도 참조하십시오 .
[override virtual protected] void QAbstractScrollArea::mousePressEvent(QMouseEvent *e)
QWidget::mousePressEvent(QMouseEvent *event)를 재구현합니다.
이 이벤트 핸들러는 하위 클래스에서 재구현하여 viewport() 위젯에 대한 마우스 클릭 이벤트를 수신할 수 있습니다. 이벤트는 e 로 전달됩니다.
기본 구현은 기본 팝업 처리를 위해 QWidget::mousePressEvent()를 호출합니다.
QWidget::mousePressEvent()도 참조하십시오 .
[override virtual protected] void QAbstractScrollArea::mouseReleaseEvent(QMouseEvent *e)
QWidget::mouseReleaseEvent(QMouseEvent *event)를 재구현합니다.
이 이벤트 핸들러는 하위 클래스에서 재구현하여 viewport() 위젯에 대한 마우스 릴리스 이벤트를 수신할 수 있습니다. 이벤트는 e 로 전달됩니다.
QWidget::mouseReleaseEvent()도 참조하십시오 .
[override virtual protected] void QAbstractScrollArea::paintEvent(QPaintEvent *event)
QFrame::paintEvent(QPaintEvent *)를 재구현합니다.
이 이벤트 핸들러는 하위 클래스에서 재구현하여 viewport() 위젯에 대한 페인트 이벤트( event 를 통해 전달됨)를 수신할 수 있습니다.
참조 : `QWidget::paintEvent()`도 참조하십시오 .
[override virtual protected] void QAbstractScrollArea::resizeEvent(QResizeEvent *event)
재구현 대상: QWidget::resizeEvent(QResizeEvent *event).
이 이벤트 핸들러는 하위 클래스에서 재구현하여 ` 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 와 같이 콘텐츠 위젯을 이동하기 위해 재구현할 수 있습니다. 매개변수 dx 와 dy 는 편의상 제공되며, 이를 통해 클래스가 스크롤해야 할 양을 알 수 있습니다(예: 픽셀 단위로 이동할 때 유용함). 이 값들을 무시하고 스크롤 막대가 가리키는 위치로 바로 스크롤할 수도 있습니다.
프로그래밍 방식으로 스크롤하기 위해 이 함수를 호출하는 것은 오류입니다. 대신 스크롤바를 사용하십시오(예: QScrollBar::setValue()을 직접 호출하는 방식).
void QAbstractScrollArea::setCornerWidget(QWidget *widget)
두 스크롤 바 사이의 모서리에 있는 위젯을 ‘ widget ’ 모드로 설정합니다.
또한 스크롤 막대 모드 중 적어도 하나는 ` AlwaysOn`로 설정하는 것이 좋습니다.
nullptr 를 전달하면 모서리에 위젯이 표시되지 않습니다.
기존에 있던 모서리 위젯은 숨겨집니다.
다른 시점에 동일한 위젯을 사용하여 setCornerWidget()을 호출할 수도 있습니다.
여기에 설정된 모든 위젯은 다른 모서리 위젯(또는 nullptr)을 설정한 후 위젯의 부모를 별도로 재설정하지 않는 한, 스크롤 영역이 소멸될 때 삭제됩니다.
새로 설정된 위젯은 현재 부모가 없어야 합니다.
기본적으로 모서리 위젯은 존재하지 않습니다.
cornerWidget() 및 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 의 소유권을 가져갑니다.
widget 가 nullptr 인 경우, 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, right 및 bottom 로 설정합니다. 이는 행과 열이 “고정”된 스프레드시트와 같은 애플리케이션에 유용합니다. 여백 공간은 비워두며, 사용되지 않는 영역에 위젯을 배치할 수 있습니다.
이 함수는 QTreeView 및 QTableView 에 의해 빈번하게 호출되므로, 여백은 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 *event)를 재구현합니다.
이 이벤트 핸들러는 하위 클래스에서 재구현하여 viewport() 위젯에 대한 휠 이벤트를 수신할 수 있습니다. 이벤트는 e 로 전달됩니다.
QWidget::wheelEvent()도 참조하십시오 .
© 2026 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.