QSplitter Class
QSplitter 클래스는 스플리터 위젯을 구현합니다. 더 보기...
Header: | #include <QSplitter> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
상속합니다: | QFrame |
속성
- childrenCollapsible : bool
- handleWidth : int
- opaqueResize : bool
- orientation : Qt::Orientation
공용 함수
QSplitter(QWidget *parent = nullptr) | |
QSplitter(Qt::Orientation orientation, QWidget *parent = nullptr) | |
virtual | ~QSplitter() |
void | addWidget(QWidget *widget) |
bool | childrenCollapsible() const |
int | count() const |
void | getRange(int index, int *min, int *max) const |
QSplitterHandle * | handle(int index) const |
int | handleWidth() const |
int | indexOf(QWidget *widget) const |
void | insertWidget(int index, QWidget *widget) |
bool | isCollapsible(int index) const |
bool | opaqueResize() const |
Qt::Orientation | orientation() const |
void | refresh() |
QWidget * | replaceWidget(int index, QWidget *widget) |
bool | restoreState(const QByteArray &state) |
QByteArray | saveState() const |
void | setChildrenCollapsible(bool) |
void | setCollapsible(int index, bool collapse) |
void | setHandleWidth(int) |
void | setOpaqueResize(bool opaque = true) |
void | setOrientation(Qt::Orientation) |
void | setSizes(const QList<int> &list) |
void | setStretchFactor(int index, int stretch) |
QList<int> | sizes() const |
QWidget * | widget(int index) const |
재구현된 공용 함수
virtual QSize | minimumSizeHint() const override |
virtual QSize | sizeHint() const override |
신호
void | splitterMoved(int pos, int index) |
보호된 함수
int | closestLegalPosition(int pos, int index) |
virtual QSplitterHandle * | createHandle() |
void | moveSplitter(int pos, int index) |
void | setRubberBand(int pos) |
재구현된 보호 함수
virtual void | changeEvent(QEvent *ev) override |
virtual void | childEvent(QChildEvent *c) override |
virtual bool | event(QEvent *e) override |
virtual void | resizeEvent(QResizeEvent *) override |
상세 설명
스플리터를 사용하면 사용자가 위젯 사이의 경계를 드래그하여 자식 위젯의 크기를 제어할 수 있습니다. 하나의 스플리터로 몇 개의 위젯을 제어할 수 있습니다. QSplitter의 일반적인 사용법은 여러 개의 위젯을 만들고 insertWidget() 또는 addWidget()을 사용하여 추가하는 것입니다.
다음 예시에서는 QListView, QTreeView, QTextEdit 를 나란히 표시하고 두 개의 스플리터 핸들을 사용합니다:
QSplitter *splitter = new QSplitter(parent); QListView *listview = new QListView; QTreeView *treeview = new QTreeView; QTextEdit *textedit = new QTextEdit; splitter->addWidget(listview); splitter->addWidget(treeview); splitter->addWidget(textedit);
insertWidget() 또는 addWidget()이 호출될 때 위젯이 이미 QSplitter 안에 있는 경우 새 위치로 이동합니다. 나중에 스플리터에서 위젯을 다시 정렬하는 데 사용할 수 있습니다. indexOf (), widget(), count()를 사용하여 분할기 내부의 위젯에 액세스할 수 있습니다.
기본 QSplitter는 자식을 가로로(나란히) 배치하지만 setOrientation(Qt::Vertical)를 사용하여 자식을 세로로 배치할 수 있습니다.
기본적으로 모든 위젯은 위젯의 minimumSizeHint() (또는 minimumSize())와 maximumSize() 사이에서 사용자가 원하는 만큼 크거나 작을 수 있습니다.
QSplitter는 기본적으로 자식 위젯의 크기를 동적으로 조정합니다. 크기 조정 작업이 끝날 때만 자식의 크기를 조정하도록 하려면 setOpaqueResize(false)를 호출하세요.
위젯 사이의 초기 크기 분포는 초기 크기에 스트레치 계수를 곱하여 결정됩니다. setSizes ()를 사용하여 모든 위젯의 크기를 설정할 수도 있습니다. sizes () 함수는 사용자가 설정한 크기를 반환합니다. 또는 saveState() 및 restoreState()를 사용하여 QByteArray 에서 위젯의 크기를 각각 저장하고 복원할 수 있습니다.
자식을 hide()하면 해당 자식의 공간이 다른 자식에게 분배됩니다. 다시 show() 하면 다시 복원됩니다.
QSplitterHandle, QHBoxLayout, QVBoxLayout, QTabWidget도 참조 하세요.
속성 문서
childrenCollapsible : bool
이 속성은 사용자가 자식 위젯의 크기를 0으로 축소할 수 있는지 여부를 나타냅니다.
기본적으로 자식은 접을 수 있습니다. setCollapsible ()를 사용하여 개별 자식의 접기를 활성화 및 비활성화할 수 있습니다.
기능에 액세스합니다:
bool | childrenCollapsible() const |
void | setChildrenCollapsible(bool) |
setCollapsible()도 참조하세요 .
handleWidth : int
이 속성은 분할기 핸들의 너비를 보유합니다.
기본적으로 이 속성에는 사용자의 플랫폼 및 스타일 기본 설정에 따라 달라지는 값이 포함됩니다.
handleWidth를 1 또는 0으로 설정하면 실제 잡기 영역은 해당 위젯의 몇 픽셀과 겹치도록 커집니다.
함수 액세스:
int | handleWidth() const |
void | setHandleWidth(int) |
opaqueResize : bool
인터랙티브하게 스플리터를 이동하는 동안 위젯의 크기가 동적으로(불투명하게) 조정되면 true
을 반환합니다. 그렇지 않으면 false
을 반환합니다.
기본 크기 조정 동작은 스타일에 따라 달라집니다(SH_Splitter_OpaqueResize 스타일 힌트에 따라 결정됨). 그러나 setOpaqueResize()를 호출하여 재정의할 수 있습니다.
액세스 함수를 호출하여 재정의할 수 있습니다:
bool | opaqueResize() const |
void | setOpaqueResize(bool opaque = true) |
QStyle::StyleHint 를참조하세요 .
orientation : Qt::Orientation
이 속성은 분할기의 방향을 유지합니다.
기본적으로 방향은 가로입니다(즉, 위젯이 나란히 배치됨). 가능한 방향은 Qt::Horizontal 와 Qt::Vertical 입니다.
기능에 접근합니다:
Qt::Orientation | orientation() const |
void | setOrientation(Qt::Orientation) |
QSplitterHandle::orientation()도 참조하세요 .
멤버 함수 문서
[explicit]
QSplitter::QSplitter(QWidget *parent = nullptr)
QFrame 생성자에 전달된 parent 인수를 사용하여 가로 분할기를 생성합니다.
setOrientation()도 참조하세요 .
[explicit]
QSplitter::QSplitter(Qt::Orientation orientation, QWidget *parent = nullptr)
주어진 orientation 와 parent 로 스플리터를 구축합니다.
setOrientation()도 참조하세요 .
[virtual noexcept]
QSplitter::~QSplitter()
분할기를 파괴합니다. 모든 자식이 삭제됩니다.
void QSplitter::addWidget(QWidget *widget)
지정된 widget 을 다른 모든 항목 뒤에 분할기의 레이아웃에 추가합니다.
widget 이 이미 분할기에 있는 경우 새 위치로 이동합니다.
참고: 분할기는 위젯의 소유권을 갖습니다.
insertWidget(), widget() 및 indexOf()도 참조하세요 .
[override virtual protected]
void QSplitter::changeEvent(QEvent *ev)
다시 구현합니다: QFrame::changeEvent(QEvent *ev).
[override virtual protected]
void QSplitter::childEvent(QChildEvent *c)
다시 구현합니다: QObject::childEvent(QChildEvent * 이벤트).
c 에 설명된 자식 위젯이 삽입 또는 제거되었음을 스플리터에 알립니다.
이 메서드는 스플리터를 부모로 하여 위젯을 만들었지만 insertWidget() 또는 addWidget()로 명시적으로 추가하지 않은 상황을 처리하는 데도 사용됩니다. 이는 호환성을 위한 것이며 새 코드에서 위젯을 스플리터에 넣는 권장 방법은 아닙니다. 새 코드에서는 insertWidget() 또는 addWidget()를 사용하세요.
addWidget() 및 insertWidget()도 참조하세요 .
[protected]
int QSplitter::closestLegalPosition(int pos, int index)
index 에서 위젯의 pos 에 가장 가까운 법적 위치를 반환합니다.
아랍어 및 히브리어와 같이 오른쪽에서 왼쪽으로 쓰는 언어의 경우 가로 분할기의 레이아웃이 반대로 표시됩니다. 그러면 위젯의 오른쪽 가장자리에서 위치가 측정됩니다.
getRange()도 참조하세요 .
int QSplitter::count() const
분할기의 레이아웃에 포함된 위젯의 수를 반환합니다.
[virtual protected]
QSplitterHandle *QSplitter::createHandle()
이 분할기의 자식 위젯으로 새 분할기 핸들을 반환합니다. 이 함수는 하위 클래스에서 재구현하여 사용자 정의 핸들을 지원할 수 있습니다.
[override virtual protected]
bool QSplitter::event(QEvent *e)
다시 구현합니다: QFrame::event(QEvent *e).
void QSplitter::getRange(int index, int *min, int *max) const
min 및 max 가 0이 아닌 경우 *min 및 *max 에서 index 의 유효한 분할기 범위를 반환합니다.
QSplitterHandle *QSplitter::handle(int index) const
지정된 index, 또는 해당 항목이 없는 경우 nullptr
에 있는 분할기 레이아웃의 항목 왼쪽(또는 위)에 있는 핸들을 반환합니다. 인덱스 0에 있는 핸들은 항상 숨겨집니다.
아랍어 및 히브리어와 같이 오른쪽에서 왼쪽으로 쓰는 언어의 경우 가로 분할기의 레이아웃이 반전됩니다. 핸들은 위젯의 오른쪽에 있는 index 에 있습니다.
count(), widget(), indexOf(), createHandle() 및 setHandleWidth()도 참조하세요 .
int QSplitter::indexOf(QWidget *widget) const
지정된 widget, widget 을 찾을 수 없는 경우 -1 의 분할기 레이아웃에서 인덱스를 반환합니다. 이 함수는 핸들에 대해서도 작동합니다.
핸들은 0부터 번호가 매겨집니다. 자식 위젯 수만큼 핸들이 있지만 0번 위치에 있는 핸들은 항상 숨겨집니다.
void QSplitter::insertWidget(int index, QWidget *widget)
지정된 index 에 지정된 widget 을 분할기의 레이아웃에 삽입합니다.
widget 이 이미 분할기에 있는 경우 새 위치로 이동합니다.
index 이 잘못된 인덱스인 경우 위젯이 끝에 삽입됩니다.
참고: 분할기가 위젯의 소유권을 갖습니다.
addWidget(), indexOf() 및 widget()도 참조하세요 .
bool QSplitter::isCollapsible(int index) const
index 의 위젯이 접을 수 있으면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
[override virtual]
QSize QSplitter::minimumSizeHint() const
속성에 대한 액세스 함수를 다시 구현합니다: QWidget::minimumSizeHint.
[protected]
void QSplitter::moveSplitter(int pos, int index)
분할기 핸들의 왼쪽 또는 위쪽 가장자리( index )를 위젯의 왼쪽 또는 위쪽 가장자리로부터의 거리인 pos 위치에 최대한 가깝게 이동합니다.
아랍어 및 히브리어와 같은 오른쪽에서 왼쪽 언어의 경우 가로 분할기의 레이아웃이 반전됩니다. pos 은 위젯의 오른쪽 가장자리로부터의 거리입니다.
splitterMoved(), closestLegalPosition() 및 getRange()도 참조하세요 .
void QSplitter::refresh()
스플리터의 상태를 업데이트합니다. 이 함수는 호출할 필요가 없습니다.
QWidget *QSplitter::replaceWidget(int index, QWidget *widget)
지정된 index 에 있는 분할기 레이아웃의 위젯을 widget 로 바꿉니다.
index 가 유효하고 widget 이 이미 분할기의 자식이 아닌 경우 방금 대체된 위젯을 반환합니다. 그렇지 않으면 null을 반환하고 대체하거나 추가하지 않습니다.
새로 삽입된 위젯의 지오메트리는 대체된 위젯과 동일합니다. 표시된 상태와 접힌 상태도 상속됩니다.
참고: 분할기는 widget 의 소유권을 가져오고 대체된 위젯의 부모를 null로 설정합니다.
참고: widget 은 reparented 을 스플리터로 가져오기 때문에 geometry 은 바로 설정되지 않고 widget 이후에야 적절한 이벤트를 받을 수 있습니다.
insertWidget() 및 indexOf()도 참조하세요 .
[override virtual protected]
void QSplitter::resizeEvent(QResizeEvent *)
다시 구현합니다: QWidget::resizeEvent(QResizeEvent * 이벤트).
bool QSplitter::restoreState(const QByteArray &state)
분할기의 레이아웃을 지정된 state 로 복원합니다. 상태가 복원되면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
일반적으로 QSettings 와 함께 사용하여 과거 세션에서 크기를 복원합니다. 다음은 예시입니다:
스플리터의 상태를 복원합니다:
QSettings settings; splitter->restoreState(settings.value("splitterSizes").toByteArray());
제공된 바이트 배열에 유효하지 않거나 오래된 데이터가 있어 분할기의 레이아웃을 복원하지 못할 수 있습니다.
saveState()도 참조하세요 .
QByteArray QSplitter::saveState() const
분할기의 레이아웃 상태를 저장합니다.
일반적으로 QSettings 와 함께 사용되어 향후 세션의 크기를 기억합니다. 버전 번호는 데이터의 일부로 저장됩니다. 다음은 예시입니다:
QSettings settings; settings.setValue("splitterSizes", splitter->saveState());
restoreState()도 참조하세요 .
void QSplitter::setCollapsible(int index, bool collapse)
index 의 자식 위젯을 collapse 로 축소할 수 있는지 여부를 설정합니다.
기본적으로 자식은 접을 수 있으므로 0이 아닌 minimumSize() 또는 minimumSizeHint()이 있더라도 사용자가 크기를 0으로 줄일 수 있습니다. 이 동작은 이 함수를 호출하여 위젯별로 변경하거나 childrenCollapsible 속성을 설정하여 분할기의 모든 위젯에 대해 전역적으로 변경할 수 있습니다.
isCollapsible() 및 childrenCollapsible 을참조하세요 .
[protected]
void QSplitter::setRubberBand(int pos)
위치에 고무 밴드를 표시합니다 pos. pos 이 음수이면 고무 밴드가 제거됩니다.
void QSplitter::setSizes(const QList<int> &list)
자식 위젯의 각 크기를 list 에 지정된 값으로 설정합니다.
분할기가 가로인 경우 이 값은 각 위젯의 너비를 왼쪽에서 오른쪽으로 픽셀 단위로 설정합니다. 분할기가 세로인 경우 각 위젯의 높이가 위에서 아래로 설정됩니다.
list 의 추가 값은 무시됩니다. list 에 값이 너무 적으면 결과가 정의되지 않지만 프로그램은 여전히 정상적으로 작동합니다.
분할기 위젯의 전체 크기는 영향을 받지 않습니다. 대신, 추가/누락된 공간은 크기의 상대적 가중치에 따라 위젯 간에 분배됩니다.
크기를 0으로 지정하면 위젯이 보이지 않게 됩니다. 위젯의 크기 정책은 유지됩니다. 즉, 각 위젯의 최소 크기 힌트보다 작은 값은 해당 힌트 값으로 대체됩니다.
sizes()도 참조하세요 .
void QSplitter::setStretchFactor(int index, int stretch)
위치 index 의 위젯 크기 정책을 업데이트하여 stretch 의 스트레치 계수를 갖도록 합니다.
stretch 는 유효 스트레치 계수가 아니며, 유효 스트레치 계수는 위젯의 초기 크기에 stretch 을 곱하여 계산됩니다.
이 함수는 편의를 위해 제공됩니다. 이는 다음과 같습니다.
QWidget *widget = splitter->widget(index); QSizePolicy policy = widget->sizePolicy(); policy.setHorizontalStretch(stretch); policy.setVerticalStretch(stretch); widget->setSizePolicy(policy);
setSizes() 및 widget()도 참조하세요 .
[override virtual]
QSize QSplitter::sizeHint() const
재구현합니다: QFrame::sizeHint() const.
QList<int> QSplitter::sizes() const
이 분할기에 있는 모든 위젯의 크기 매개변수 목록을 반환합니다.
분할기의 방향이 가로인 경우 목록에는 위젯 너비가 왼쪽에서 오른쪽으로 픽셀 단위로 포함되며, 방향이 세로인 경우 목록에는 위젯 높이가 위에서 아래로 픽셀 단위로 포함됩니다.
이 값을 다른 분할기의 setSizes() 함수에 전달하면 이 분할기와 동일한 레이아웃의 분할기가 생성됩니다.
보이지 않는 위젯의 크기는 0입니다.
setSizes()도 참조하세요 .
[signal]
void QSplitter::splitterMoved(int pos, int index)
이 신호는 특정 index 의 스플리터 핸들이 pos 위치로 이동했을 때 발생합니다.
아랍어 및 히브리어와 같은 오른쪽에서 왼쪽 언어의 경우 가로 분할기의 레이아웃이 반전됩니다. pos 은 위젯의 오른쪽 가장자리로부터의 거리입니다.
moveSplitter()도 참조하세요 .
QWidget *QSplitter::widget(int index) const
분할기의 레이아웃에서 지정된 index 또는 해당 위젯이 없는 경우 nullptr
에 있는 위젯을 반환합니다.
count(), handle(), indexOf() 및 insertWidget()도 참조하세요 .
© 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.