QSplitterHandle Class
QSplitterHandle 클래스는 스플리터에 대한 핸들 기능을 제공합니다. 더 보기...
| 헤더: | #include <QSplitterHandle> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 상속: | QWidget |
공개 함수
| QSplitterHandle(Qt::Orientation orientation, QSplitter *parent) | |
| virtual | ~QSplitterHandle() |
| bool | opaqueResize() const |
| Qt::Orientation | orientation() const |
| void | setOrientation(Qt::Orientation orientation) |
| QSplitter * | splitter() const |
재구현된 공용 함수
| virtual QSize | sizeHint() const override |
보호된 함수
| int | closestLegalPosition(int pos) |
| void | moveSplitter(int pos) |
재구현된 보호 함수
| virtual bool | event(QEvent *event) 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 | resizeEvent(QResizeEvent *event) override |
상세 설명
QSplitterHandle은 일반적으로 사람들이 스플리터를 떠올릴 때 가장 먼저 생각나는 것입니다. 이는 위젯의 크기를 조정하는 데 사용되는 핸들입니다.
QSplitter 를 사용하는 일반적인 개발자는 QSplitterHandle에 대해 전혀 신경 쓸 필요가 없습니다. 이 클래스는 팝업 메뉴와 같은 추가 기능을 제공하는 스플리터 핸들을 원하는 개발자를 위해 제공됩니다.
스플리터 핸들을 생성하는 일반적인 방법은 ` QSplitter `을 서브클래스화한 다음, ` QSplitter::createHandle()`을 재구현하여 사용자 정의 스플리터 핸들을 인스턴스화하는 것입니다. 예를 들어, 최소한의 ` QSplitter ` 서브클래스는 다음과 같이 보일 수 있습니다:
class Splitter : public QSplitter
{
public:
Splitter(Qt::Orientation orientation, QWidget *parent = nullptr);
protected:
QSplitterHandle *createHandle() override;
};createHandle() 메서드의 구현은 단순히 사용자 정의 스플리터 핸들을 생성하는 것으로, 이 예제에서는 Splitter 라고 합니다:
QSplitterHandle *Splitter::createHandle()
{
return new SplitterHandle(orientation(), this);
}orientation() 및 opaqueResize()과 같은 함수를 사용하여 특정 핸들에 대한 정보를 얻을 수 있으며, 이 정보는 상위 스플리터에서 가져옵니다. 이러한 세부 정보를 활용하면 스플리터의 방향에 따라 사용자 정의 핸들의 모양을 다르게 설정할 수 있습니다.
사용자 정의 핸들 서브클래스의 복잡성은 수행해야 할 작업에 따라 달라집니다. 간단한 서브클래스는 paintEvent() 구현만 제공할 수도 있습니다:
void SplitterHandle::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
if (orientation() == Qt::Horizontal) {
gradient.setStart(rect().left(), rect().height()/2);
gradient.setFinalStop(rect().right(), rect().height()/2);
} else {
gradient.setStart(rect().width()/2, rect().top());
gradient.setFinalStop(rect().width()/2, rect().bottom());
}
painter.fillRect(event->rect(), QBrush(gradient));
}이 예제에서는 핸들의 방향에 따라 미리 정의된 그라데이션이 다르게 설정됩니다. QSplitterHandle은 핸들에 대한 적절한 크기 힌트를 제공하므로, 핸들에 특별한 크기 요구 사항이 없는 한 하위 클래스에서 sizeHint()을 재구현할 필요가 없습니다.
QSplitter도 참조하십시오 .
멤버 함수 문서
[explicit] QSplitterHandle::QSplitterHandle(Qt::Orientation orientation, QSplitter *parent)
지정된 orientation 및 parent 을 사용하여 ` QSplitter ` 핸들을 생성합니다.
[virtual noexcept] QSplitterHandle::~QSplitterHandle()
소멸자.
[protected] int QSplitterHandle::closestLegalPosition(int pos)
스플리터 핸들의 pos 에 가장 가까운 유효한 위치를 반환합니다. 위치는 오른쪽에서 왼쪽으로 읽는 언어의 경우에도 스플리터의 왼쪽 또는 위쪽 가장자리에서 측정됩니다.
QSplitter::closestLegalPosition() 및 moveSplitter()도 참조하십시오 .
[override virtual protected] bool QSplitterHandle::event(QEvent *event)
QWidget::event(QEvent *event)를 재구현합니다.
[override virtual protected] void QSplitterHandle::mouseMoveEvent(QMouseEvent *e)
QWidget::mouseMoveEvent(QMouseEvent *event)를 재구현합니다.
[override virtual protected] void QSplitterHandle::mousePressEvent(QMouseEvent *e)
QWidget::mousePressEvent(QMouseEvent *event)를 재구현합니다.
[override virtual protected] void QSplitterHandle::mouseReleaseEvent(QMouseEvent *e)
QWidget::mouseReleaseEvent(QMouseEvent *event)를 재구현합니다.
[protected] void QSplitterHandle::moveSplitter(int pos)
스플리터가 이 핸들을 pos 위치로 이동하도록 지시합니다. 여기서 은 위젯의 왼쪽 또는 위쪽 가장자리로부터의 거리입니다.
오른쪽에서 왼쪽으로 읽는 언어의 경우에도 pos 는 왼쪽(또는 위쪽)을 기준으로 측정된다는 점에 유의하십시오. 이 함수는 QSplitter::moveSplitter()를 호출하기 전에 pos 를 적절한 위치로 매핑합니다.
QSplitter::moveSplitter() 및 closestLegalPosition()도 참조하십시오 .
bool QSplitterHandle::opaqueResize() const
스플리터를 대화형으로 이동하는 동안 위젯의 크기가 동적으로(불투명하게) 조정되면 ` true `를 반환합니다. 그렇지 않은 경우 ` false`를 반환합니다. 이 값은 ` QSplitter`에 의해 제어됩니다.
QSplitter::opaqueResize()도 참조하십시오 .
Qt::Orientation QSplitterHandle::orientation() const
핸들의 방향을 반환합니다. 이 값은 일반적으로 QSplitter 에서 전달됩니다.
setOrientation() 및 QSplitter::orientation()도 참조하십시오 .
[override virtual protected] void QSplitterHandle::paintEvent(QPaintEvent *)
QWidget::paintEvent(QPaintEvent *event)을 재구현합니다.
[override virtual protected] void QSplitterHandle::resizeEvent(QResizeEvent *event)
QWidget::resizeEvent(QResizeEvent *event)를 재구현합니다.
void QSplitterHandle::setOrientation(Qt::Orientation orientation)
스플리터 핸들의 방향을 orientation 로 설정합니다. 이 설정은 일반적으로 QSplitter 에서 전달됩니다.
orientation() 및 QSplitter::setOrientation()도 참조하십시오 .
[override virtual] QSize QSplitterHandle::sizeHint() const
QWidget::sizeHint 속성에 대한 액세스 함수를 재구현합니다.
QSplitter *QSplitterHandle::splitter() const
이 스플리터 핸들과 연결된 스플리터를 반환합니다.
QSplitter::handle()도 참조하십시오 .
© 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.