En esta página

QSplitterHandle Class

La clase QSplitterHandle proporciona la funcionalidad handle para el splitter. Más...

Cabecera: #include <QSplitterHandle>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Hereda: QWidget

Funciones Públicas

QSplitterHandle(Qt::Orientation orientation, QSplitter *parent)
virtual ~QSplitterHandle()
bool opaqueResize() const
Qt::Orientation orientation() const
void setOrientation(Qt::Orientation orientation)
QSplitter *splitter() const

Funciones públicas reimplementadas

virtual QSize sizeHint() const override

Funciones protegidas

int closestLegalPosition(int pos)
void moveSplitter(int pos)

Funciones protegidas reimplementadas

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

Descripción Detallada

QSplitterHandle es típicamente en lo que la gente piensa cuando piensa en un splitter. Es el manejador que se utiliza para redimensionar los widgets.

Un desarrollador típico que utilice QSplitter nunca tendrá que preocuparse por QSplitterHandle. Se proporciona para desarrolladores que quieren manejadores de splitter que proporcionen características extra, como menús emergentes.

La forma típica de crear splitter handles es subclasificar QSplitter y luego reimplementar QSplitter::createHandle() para instanciar el splitter handle personalizado. Por ejemplo, una subclase mínima de QSplitter podría tener este aspecto:

class Splitter : public QSplitter
{
public:
    Splitter(Qt::Orientation orientation, QWidget *parent = nullptr);

protected:
    QSplitterHandle *createHandle() override;
};

La implementación de createHandle() simplemente construye un manejador de división personalizado, llamado Splitter en este ejemplo:

QSplitterHandle *Splitter::createHandle()
{
    return new SplitterHandle(orientation(), this);
}

La información sobre un manejador dado puede obtenerse usando funciones como orientation() y opaqueResize(), y se recupera de su divisor padre. Detalles como estos se pueden utilizar para dar a los manejadores personalizados diferentes apariencias dependiendo de la orientación del divisor.

La complejidad de una subclase de manejador personalizado depende de las tareas que necesite realizar. Una subclase simple puede proporcionar únicamente una implementación de 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));
}

En este ejemplo, un gradiente predefinido se configura de forma diferente dependiendo de la orientación del manejador. QSplitterHandle proporciona una sugerencia de tamaño razonable para el manejador, por lo que la subclase no necesita proporcionar una reimplementación de sizeHint() a menos que el manejador tenga requisitos especiales de tamaño.

Véase también QSplitter.

Documentación de las funciones miembro

[explicit] QSplitterHandle::QSplitterHandle(Qt::Orientation orientation, QSplitter *parent)

Crea un manejador QSplitter con los datos orientation y parent.

[virtual noexcept] QSplitterHandle::~QSplitterHandle()

Destructor.

[protected] int QSplitterHandle::closestLegalPosition(int pos)

Devuelve la posición legal más cercana a pos del asa del divisor. Las posiciones se miden desde el borde izquierdo o superior del divisor, incluso para idiomas de derecha a izquierda.

Véase también QSplitter::closestLegalPosition() y moveSplitter().

[override virtual protected] bool QSplitterHandle::event(QEvent *event)

Reimplementa: QWidget::event(QEvent *event).

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

Reimplementa: QWidget::mouseMoveEvent(QMouseEvent *event).

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

Reimplementa: QWidget::mousePressEvent(QMouseEvent *event).

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

Reimplementa: QWidget::mouseReleaseEvent(QMouseEvent *event).

[protected] void QSplitterHandle::moveSplitter(int pos)

Indica al divisor que mueva este manejador a la posición pos, que es la distancia desde el borde izquierdo o superior del widget.

Tenga en cuenta que pos también se mide desde la izquierda (o desde arriba) para los idiomas de derecha a izquierda. Esta función asignará pos a la posición apropiada antes de llamar a QSplitter::moveSplitter().

Véase también QSplitter::moveSplitter() y closestLegalPosition().

bool QSplitterHandle::opaqueResize() const

Devuelve true si los widgets se redimensionan dinámicamente (opacamente) mientras se mueve interactivamente el divisor. En caso contrario, devuelve false. Este valor está controlado por la función QSplitter.

Véase también QSplitter::opaqueResize().

Qt::Orientation QSplitterHandle::orientation() const

Devuelve la orientación del asa. Suele propagarse desde QSplitter.

Véase también setOrientation() y QSplitter::orientation().

[override virtual protected] void QSplitterHandle::paintEvent(QPaintEvent *)

Reimplementa: QWidget::paintEvent(QPaintEvent *event).

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

Reimplementa: QWidget::resizeEvent(QResizeEvent *event).

void QSplitterHandle::setOrientation(Qt::Orientation orientation)

Establece la orientación del asa del divisor en orientation. Normalmente se propaga desde QSplitter.

Véase también orientation() y QSplitter::setOrientation().

[override virtual] QSize QSplitterHandle::sizeHint() const

Reimplementa una función de acceso para la propiedad: QWidget::sizeHint.

QSplitter *QSplitterHandle::splitter() const

Devuelve el divisor asociado a este manejador de divisor.

Véase también 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.