QSplitterHandle Class

QSplitterHandle 클래스는 스플리터에 대한 핸들 기능을 제공합니다. 더 보기...

Header: #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)

주어진 orientationparent 으로 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 * 이벤트).

[override virtual protected] void QSplitterHandle::mouseMoveEvent(QMouseEvent *e)

다시 구현합니다: QWidget::mouseMoveEvent(QMouseEvent * 이벤트).

[override virtual protected] void QSplitterHandle::mousePressEvent(QMouseEvent *e)

다시 구현합니다: QWidget::mousePressEvent(QMouseEvent * 이벤트).

[override virtual protected] void QSplitterHandle::mouseReleaseEvent(QMouseEvent *e)

다시 구현합니다: QWidget::mouseReleaseEvent(QMouseEvent * 이벤트).

[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 * 이벤트).

[override virtual protected] void QSplitterHandle::resizeEvent(QResizeEvent *event)

다시 구현합니다: QWidget::resizeEvent(QResizeEvent * 이벤트).

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()도 참조하세요 .

© 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.