QScrollBar Class
QScrollBar 위젯은 세로 또는 가로 스크롤 막대를 제공합니다. 더 보기...
Header: | #include <QScrollBar> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
상속합니다: | QAbstractSlider |
공용 함수
QScrollBar(QWidget *parent = nullptr) | |
QScrollBar(Qt::Orientation orientation, QWidget *parent = nullptr) | |
virtual | ~QScrollBar() |
재구현된 공용 함수
보호된 함수
virtual void | initStyleOption(QStyleOptionSlider *option) const |
재구현된 보호 함수
virtual void | contextMenuEvent(QContextMenuEvent *event) override |
virtual void | hideEvent(QHideEvent *) override |
virtual void | mouseMoveEvent(QMouseEvent *e) override |
virtual void | mousePressEvent(QMouseEvent *e) override |
virtual void | mouseReleaseEvent(QMouseEvent *e) override |
virtual void | paintEvent(QPaintEvent *) override |
virtual void | sliderChange(QAbstractSlider::SliderChange change) override |
virtual void | wheelEvent(QWheelEvent *event) override |
상세 설명
스크롤 막대는 사용자가 문서를 표시하는 데 사용되는 위젯보다 큰 문서의 일부에 액세스할 수 있게 해주는 컨트롤입니다. 이 컨트롤은 문서 내에서 사용자의 현재 위치와 표시되는 문서의 양을 시각적으로 표시합니다. 스크롤 막대에는 일반적으로 보다 정확한 탐색을 가능하게 하는 다른 컨트롤이 장착되어 있습니다. Qt는 각 플랫폼에 적합한 방식으로 스크롤 막대를 표시합니다.
다른 위젯에 스크롤 보기를 제공해야 하는 경우, 뷰포트 위젯과 스크롤 막대를 제공하는 QScrollArea 클래스를 사용하는 것이 더 편리할 수 있습니다. 예를 들어 QAbstractScrollArea 을 사용하여 특수 위젯에 유사한 기능을 구현해야 하는 경우, QAbstractItemView 을 서브클래싱하기로 결정한 경우 QScrollBar가 유용합니다. 슬라이더 컨트롤을 사용하여 주어진 범위 내의 값을 얻는 대부분의 다른 상황에서는 QSlider 클래스가 더 적합할 수 있습니다.
스크롤 막대에는 일반적으로 슬라이더, 스크롤 화살표, 페이지 컨트롤 등 네 개의 개별 컨트롤이 포함됩니다.
|
각 스크롤 막대에는 스크롤 막대의 시작점에서 슬라이더가 얼마나 멀리 떨어져 있는지를 나타내는 값이 있으며, 이 값은 value()로 구하고 setValue()로 설정합니다. 이 값은 항상 minimum()에서 maximum()를 포함하여 스크롤 막대에 대해 정의된 값 범위 내에 있습니다. 허용되는 값의 범위는 setMinimum() 및 setMaximum()로 설정할 수 있습니다. 최소값에서는 슬라이더의 상단 가장자리(세로 스크롤 막대의 경우) 또는 왼쪽 가장자리(가로 스크롤 막대의 경우)가 스크롤 막대의 상단(또는 왼쪽) 끝이 됩니다. 최대 값에서는 슬라이더의 아래쪽(또는 오른쪽) 가장자리가 스크롤 막대의 아래쪽(또는 오른쪽) 끝이 됩니다.
슬라이더의 길이는 일반적으로 페이지 스텝 값과 관련이 있으며, 일반적으로 스크롤 보기에 표시되는 문서 영역의 비율을 나타냅니다. 페이지 단계는 사용자가 Page Up 및 Page Down 키를 누를 때 값이 변경되는 양이며 setPageStep()로 설정됩니다. 줄 단계로 정의된 값의 작은 변경은 커서 키를 사용하여 이루어지며, 이 양은 setSingleStep()로 설정됩니다.
사용되는 값의 범위는 스크롤 막대 위젯의 실제 크기와 무관하다는 점에 유의하세요. 범위와 페이지 단계에 대한 값을 선택할 때 이 점을 고려할 필요는 없습니다.
스크롤 막대에 지정된 값의 범위는 슬라이더의 길이를 고려해야 하므로 QSlider 의 값과 다르게 결정되는 경우가 많습니다. 100줄의 문서가 있는데 위젯에 20줄만 표시할 수 있는 경우 페이지 단계는 20, 최소값은 0, 최대값은 80으로 스크롤 막대를 구성할 수 있습니다. 이렇게 하면 5개의 '페이지'가 있는 스크롤 막대가 생성됩니다.
문서 길이, 스크롤 막대에 사용되는 값의 범위, 페이지 단계 사이의 관계는 많은 일반적인 상황에서 간단합니다. 스크롤 막대의 값 범위는 문서 길이를 나타내는 일부 값에서 선택한 페이지 단계를 빼서 결정됩니다. 이러한 경우 다음 공식이 유용합니다: 문서 길이 = maximum() - minimum() + pageStep(). |
QScrollBar는 정수 범위만 제공합니다. QScrollBar는 매우 큰 숫자를 처리하지만 현재 화면의 스크롤 막대는 약 100,000픽셀 이상의 범위를 유용하게 나타낼 수 없습니다. 그 이상에서는 사용자가 키보드나 마우스로 슬라이더를 제어하기 어려워지고 스크롤 화살표의 사용이 제한됩니다.
ScrollBar는 QAbstractSlider 에서 포괄적인 신호 세트를 상속받습니다:
- valueChanged()는 스크롤 막대의 값이 변경되면 발생합니다. 추적()은 사용자 상호작용 중에 이 신호의 발생 여부를 결정합니다.
- rangeChanged()는 스크롤 막대의 값 범위가 변경되었을 때 발생합니다.
- sliderPressed()는 사용자가 슬라이더를 드래그하기 시작할 때 발생합니다.
- sliderMoved()는 사용자가 슬라이더를 드래그할 때 발생합니다.
- sliderReleased()는 사용자가 슬라이더를 놓을 때 발생합니다.
- actionTriggered()는 사용자 상호작용 또는 triggerAction() 함수를 통해 스크롤 막대가 변경될 때 발생합니다.
스크롤 막대는 키보드로 제어할 수 있지만 기본값은 focusPolicy() Qt::NoFocus 입니다. 키보드와 스크롤 막대의 상호작용을 활성화하려면 setFocusPolicy()를 사용합니다:
- 왼쪽/오른쪽은 가로 스크롤 막대를 한 단계씩 이동합니다.
- 위/아래는 세로 스크롤 막대를 한 단계씩 이동합니다.
- PageUp은 한 페이지 위로 이동합니다.
- 페이지다운은 한 페이지 아래로 이동합니다.
- 홈은 시작(최소)으로 이동합니다.
- 끝은 끝(최대)으로 이동합니다.
슬라이더 자체는 triggerAction() 함수를 사용하여 스크롤 막대 컨트롤과 사용자 상호 작용을 시뮬레이션하여 제어할 수 있습니다. 이 함수는 공통된 값 범위를 사용하는 다양한 위젯이 많은 경우에 유용합니다.
대부분의 GUI 스타일은 pageStep() 값을 사용하여 슬라이더의 크기를 계산합니다.
QScrollArea, QSlider, QDial, QSpinBox, 슬라이더 예시도참조하세요 .
멤버 함수 문서
[explicit]
QScrollBar::QScrollBar(QWidget *parent = nullptr)
세로 스크롤 바를 생성합니다.
parent 인수는 QWidget 생성자로 전송됩니다.
minimum 기본값은 0, maximum 은 99, singleStep 크기는 1, pageStep 크기는 10, 이니셜 value 은 0입니다.
[explicit]
QScrollBar::QScrollBar(Qt::Orientation orientation, QWidget *parent = nullptr)
주어진 orientation 으로 스크롤 바를 생성합니다.
parent 인수는 QWidget 생성자에게 전달됩니다.
minimum 기본값은 0, maximum 은 99, singleStep 크기는 1, pageStep 크기는 10, 이니셜 value 은 0입니다.
[virtual noexcept]
QScrollBar::~QScrollBar()
스크롤 막대를 파괴합니다.
[override virtual protected]
void QScrollBar::contextMenuEvent(QContextMenuEvent *event)
다시 구현합니다: QWidget::contextMenuEvent(QContextMenuEvent * 이벤트).
[override virtual]
bool QScrollBar::event(QEvent *event)
다시 구현합니다: QAbstractSlider::event(QEvent *e).
[override virtual protected]
void QScrollBar::hideEvent(QHideEvent *)
다시 구현합니다: QWidget::hideEvent(QHideEvent * 이벤트).
[virtual protected]
void QScrollBar::initStyleOption(QStyleOptionSlider *option) const
QScrollBar 의 값으로 option 을 초기화합니다. 이 메서드는 하위 클래스에 QStyleOptionSlider 이 필요하지만 모든 정보를 직접 채우고 싶지 않을 때 유용합니다.
QStyleOption::initFrom()도 참조하세요 .
[override virtual protected]
void QScrollBar::mouseMoveEvent(QMouseEvent *e)
다시 구현합니다: QWidget::mouseMoveEvent(QMouseEvent * 이벤트).
[override virtual protected]
void QScrollBar::mousePressEvent(QMouseEvent *e)
다시 구현합니다: QWidget::mousePressEvent(QMouseEvent * 이벤트).
[override virtual protected]
void QScrollBar::mouseReleaseEvent(QMouseEvent *e)
다시 구현합니다: QWidget::mouseReleaseEvent(QMouseEvent * 이벤트).
[override virtual protected]
void QScrollBar::paintEvent(QPaintEvent *)
다시 구현합니다: QWidget::paintEvent(QPaintEvent * 이벤트).
[override virtual]
QSize QScrollBar::sizeHint() const
속성에 대한 액세스 함수를 다시 구현합니다: QWidget::sizeHint.
[override virtual protected]
void QScrollBar::sliderChange(QAbstractSlider::SliderChange change)
다시 구현합니다: QAbstractSlider::sliderChange(QAbstractSlider::SliderChange 변경).
[override virtual protected]
void QScrollBar::wheelEvent(QWheelEvent *event)
다시 구현합니다: QAbstractSlider::wheelEvent(QWheelEvent *e).
© 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.