QScrollArea Class
QScrollArea 클래스는 다른 위젯으로 스크롤 보기를 제공합니다. 더 보기...
Header: | #include <QScrollArea> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
상속합니다: | QAbstractScrollArea |
속성
- alignment : Qt::Alignment
- widgetResizable : bool
공용 함수
QScrollArea(QWidget *parent = nullptr) | |
virtual | ~QScrollArea() |
Qt::Alignment | alignment() const |
void | ensureVisible(int x, int y, int xmargin = 50, int ymargin = 50) |
void | ensureWidgetVisible(QWidget *childWidget, int xmargin = 50, int ymargin = 50) |
void | setAlignment(Qt::Alignment) |
void | setWidget(QWidget *widget) |
void | setWidgetResizable(bool resizable) |
QWidget * | takeWidget() |
QWidget * | widget() const |
bool | widgetResizable() const |
재구현된 공용 함수
virtual bool | focusNextPrevChild(bool next) override |
virtual QSize | sizeHint() const override |
재구현된 보호 함수
virtual bool | event(QEvent *e) override |
virtual bool | eventFilter(QObject *o, QEvent *e) override |
virtual void | resizeEvent(QResizeEvent *) override |
virtual void | scrollContentsBy(int dx, int dy) override |
virtual QSize | viewportSizeHint() const override |
상세 설명
스크롤 영역은 프레임 내에 자식 위젯의 콘텐츠를 표시하는 데 사용됩니다. 위젯이 프레임 크기를 초과하는 경우 뷰는 자식 위젯의 전체 영역을 볼 수 있도록 스크롤 막대를 제공할 수 있습니다. 하위 위젯은 setWidget()로 지정해야 합니다. 예를 들어
QLabel *imageLabel = new QLabel; QImage image("happyguy.png"); imageLabel->setPixmap(QPixmap::fromImage(image)); scrollArea = new QScrollArea; scrollArea->setBackgroundRole(QPalette::Dark); scrollArea->setWidget(imageLabel);
위의 코드는 이미지 레이블이 포함된 스크롤 영역(아래 이미지에 표시됨)을 만듭니다. 이미지 크기를 조정할 때 스크롤 영역은 필요한 스크롤 막대를 제공할 수 있습니다:
![]() | ![]() | ![]() |
스크롤 막대 모양은 현재 설정된 scroll bar policies 에 따라 달라집니다. QAbstractScrollArea 에서 상속된 기능을 사용하여 스크롤 막대의 모양을 제어할 수 있습니다.
예를 들어 QAbstractScrollArea::horizontalScrollBarPolicy 및 QAbstractScrollArea::verticalScrollBarPolicy 속성을 설정할 수 있습니다. 또는 스크롤 영역의 콘텐츠가 변경될 때 스크롤 막대가 동적으로 조정되도록 하려면 horizontalScrollBar() 및 verticalScrollBar() 함수(스크롤 막대에 액세스할 수 있음)를 사용하고 QScrollBar::setValue() 함수를 사용하여 스크롤 영역의 콘텐츠가 변경될 때마다 스크롤 막대의 값을 설정할 수 있습니다.
widget() 함수를 사용하여 하위 위젯을 검색할 수 있습니다. setWidgetResizable () 함수를 사용하여 뷰의 크기를 조정할 수 있습니다. 위젯의 정렬은 setAlignment()로 지정할 수 있습니다.
ensureVisible() 및 ensureWidgetVisible() 두 가지 편의 함수는 필요한 경우 콘텐츠를 스크롤하여 뷰포트 내에서 콘텐츠의 특정 영역을 볼 수 있도록 합니다.
크기 힌트 및 레이아웃
스크롤 영역을 사용하여 사용자 정의 위젯의 콘텐츠를 표시할 때는 하위 위젯의 size hint 값이 적절한 값으로 설정되어 있는지 확인하는 것이 중요합니다. 하위 위젯에 표준 QWidget 을 사용하는 경우 위젯의 콘텐츠가 스크롤 영역 내에 올바르게 표시되도록 QWidget::setMinimumSize()을 호출해야 할 수 있습니다.
레이아웃에 배열된 자식 위젯이 포함된 위젯의 콘텐츠를 표시하는 데 스크롤 영역을 사용하는 경우 레이아웃의 크기 정책에 따라 위젯의 크기도 결정된다는 점을 알아두는 것이 중요합니다. 이는 레이아웃의 콘텐츠를 동적으로 변경하려는 경우 특히 유용합니다. 이러한 경우 레이아웃의 size constraint 속성을 레이아웃의 최소 및/또는 최대 크기에 대한 제약 조건을 제공하는 속성(예: QLayout::SetMinAndMaxSize)으로 설정하면 레이아웃의 콘텐츠가 변경될 때마다 스크롤 영역의 크기가 업데이트됩니다.
QAbstractScrollArea 및 QScrollBar 을참조하세요 .
속성 문서
alignment : Qt::Alignment
이 속성은 스크롤 영역 위젯의 정렬을 유지합니다.
유효한 정렬은 다음 플래그의 조합입니다:
Qt::AlignLeft
Qt::AlignHCenter
Qt::AlignRight
Qt::AlignTop
Qt::AlignVCenter
Qt::AlignBottom
기본적으로 위젯은 스크롤 영역의 왼쪽 상단 모서리에 고정됩니다.
액세스 기능:
Qt::Alignment | alignment() const |
void | setAlignment(Qt::Alignment) |
widgetResizable : bool
이 속성은 스크롤 영역에서 뷰 위젯의 크기를 조정할지 여부를 보유합니다.
이 속성이 false(기본값)로 설정되어 있으면 스크롤 영역은 위젯의 크기를 따릅니다. 이 속성과 관계없이 widget()->resize()를 사용하여 프로그래밍 방식으로 위젯의 크기를 조정할 수 있으며 스크롤 영역이 새 크기로 자동 조정됩니다.
이 속성을 true로 설정하면 스크롤 막대를 피하거나 여분의 공간을 활용하기 위해 스크롤 영역의 크기가 위젯에 맞게 자동으로 조정됩니다.
액세스 함수:
bool | widgetResizable() const |
void | setWidgetResizable(bool resizable) |
멤버 함수 문서
[explicit]
QScrollArea::QScrollArea(QWidget *parent = nullptr)
주어진 parent 으로 빈 스크롤 영역을 구성합니다.
setWidget()도 참조하세요 .
[virtual noexcept]
QScrollArea::~QScrollArea()
스크롤 영역과 그 자식 위젯을 삭제합니다.
setWidget()도 참조하세요 .
void QScrollArea::ensureVisible(int x, int y, int xmargin = 50, int ymargin = 50)
픽셀 단위로 지정된 여백이 있는 뷰포트 영역 내부에 포인트(x, y)가 보이도록 스크롤 영역의 콘텐츠를 스크롤합니다( xmargin 및 ymargin). 지정된 포인트에 도달할 수 없는 경우 콘텐츠가 가장 가까운 유효한 위치로 스크롤됩니다. 두 여백의 기본값은 50픽셀입니다.
void QScrollArea::ensureWidgetVisible(QWidget *childWidget, int xmargin = 50, int ymargin = 50)
QScrollArea::widget()의 childWidget 이 뷰포트 내부에서 픽셀 단위로 지정된 여백을 사용하여 xmargin 및 ymargin 이 보이도록 스크롤 영역의 내용을 스크롤합니다. 지정된 지점에 도달할 수 없는 경우 가장 가까운 유효한 위치로 내용이 스크롤됩니다. 두 여백의 기본값은 50픽셀입니다.
[override virtual protected]
bool QScrollArea::event(QEvent *e)
다시 구현합니다: QAbstractScrollArea::event(QEvent * 이벤트).
[override virtual protected]
bool QScrollArea::eventFilter(QObject *o, QEvent *e)
다시 구현합니다: QObject::eventFilter(QObject *watched, QEvent *event).
[override virtual]
bool QScrollArea::focusNextPrevChild(bool next)
다시 구현합니다: QWidget::focusNextPrevChild(다음 부울).
[override virtual protected]
void QScrollArea::resizeEvent(QResizeEvent *)
다시 구현합니다: QAbstractScrollArea::resizeEvent(QResizeEvent * 이벤트).
[override virtual protected]
void QScrollArea::scrollContentsBy(int dx, int dy)
재구현합니다: QAbstractScrollArea::scrollContentsBy(int dx, int dy).
void QScrollArea::setWidget(QWidget *widget)
스크롤 영역의 widget 을 설정합니다.
widget 은 스크롤 영역의 자식이 되며, 스크롤 영역이 삭제되거나 새 위젯이 설정되면 삭제됩니다.
위젯의 autoFillBackground 속성은 true
으로 설정됩니다.
widget 을 추가할 때 스크롤 영역이 표시되는 경우 명시적으로 show()해야 합니다.
이 함수를 호출하기 전에 widget 레이아웃을 추가해야 하며, 나중에 추가하면 show() 스크롤 영역이 언제 표시되든 widget 이 표시되지 않습니다. 이 경우 나중에 widget 을 show()하지 않을 수도 있습니다.
widget()도 참조하세요 .
[override virtual]
QSize QScrollArea::sizeHint() const
재구현합니다: QAbstractScrollArea::sizeHint() const.
QWidget *QScrollArea::takeWidget()
스크롤 영역의 위젯을 제거하고 위젯의 소유권을 호출자에게 전달합니다.
widget()도 참조하세요 .
[override virtual protected]
QSize QScrollArea::viewportSizeHint() const
재구현합니다: QAbstractScrollArea::viewportSizeHint() const.
QWidget *QScrollArea::widget() const
스크롤 영역의 위젯을 반환하거나 위젯이 없는 경우 nullptr
을 반환합니다.
setWidget()도 참조하세요 .
© 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.