Sur cette page

QSplitterHandle Class

La classe QSplitterHandle fournit une fonctionnalité de poignée pour le séparateur. Plus d'informations...

En-tête : #include <QSplitterHandle>
CMake : find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake : QT += widgets
Héritages : QWidget

Fonctions publiques

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

Fonctions publiques réimplémentées

virtual QSize sizeHint() const override

Fonctions protégées

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

Fonctions protégées réimplémentées

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

Description détaillée

QSplitterHandle est typiquement ce à quoi les gens pensent lorsqu'ils pensent à un séparateur. Il s'agit de la poignée utilisée pour redimensionner les widgets.

Un développeur classique utilisant QSplitter n'aura jamais à se préoccuper de QSplitterHandle. Il est fourni aux développeurs qui veulent des poignées de séparation offrant des fonctionnalités supplémentaires, telles que des menus contextuels.

La façon typique de créer des poignées de séparation est de sous-classer QSplitter et de réimplémenter QSplitter::createHandle() pour instancier la poignée de séparation personnalisée. Par exemple, une sous-classe minimale de QSplitter pourrait ressembler à ceci :

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

protected:
    QSplitterHandle *createHandle() override;
};

L'implémentation de createHandle() construit simplement un handle de splitter personnalisé, appelé Splitter dans cet exemple :

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

Les informations relatives à un handle donné peuvent être obtenues à l'aide de fonctions telles que orientation() et opaqueResize(), et sont récupérées à partir de son splitter parent. Des détails comme ceux-ci peuvent être utilisés pour donner aux poignées personnalisées des apparences différentes en fonction de l'orientation du séparateur.

La complexité d'une sous-classe de poignée personnalisée dépend des tâches qu'elle doit accomplir. Une sous-classe simple peut se contenter de fournir une implémentation 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));
}

Dans cet exemple, un dégradé prédéfini est configuré différemment en fonction de l'orientation de la poignée. QSplitterHandle fournit une indication de taille raisonnable pour la poignée, de sorte que la sous-classe n'a pas besoin de fournir une réimplémentation de sizeHint() à moins que la poignée n'ait des exigences particulières en matière de taille.

Voir également QSplitter.

Documentation des fonctions membres

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

Crée une poignée QSplitter avec les données orientation et parent.

[virtual noexcept] QSplitterHandle::~QSplitterHandle()

Destructeur.

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

Renvoie la position légale la plus proche de pos de la poignée du séparateur. Les positions sont mesurées à partir du bord gauche ou supérieur du séparateur, même pour les langues allant de droite à gauche.

Voir aussi QSplitter::closestLegalPosition() et moveSplitter().

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

Réimplémente : QWidget::event(QEvent *event).

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

Réimplémente : QWidget::mouseMoveEvent(QMouseEvent *event).

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

Réimplémente : QWidget::mousePressEvent(QMouseEvent *event).

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

Réimplémente : QWidget::mouseReleaseEvent(QMouseEvent *event).

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

Indique au séparateur de déplacer cette poignée à la position pos, qui est la distance par rapport au bord gauche ou supérieur du widget.

Notez que pos est également mesuré à partir de la gauche (ou du haut) pour les langues allant de droite à gauche. Cette fonction permet de placer pos à la position appropriée avant d'appeler QSplitter::moveSplitter().

Voir également QSplitter::moveSplitter() et closestLegalPosition().

bool QSplitterHandle::opaqueResize() const

Renvoie true si les widgets sont redimensionnés dynamiquement (de manière opaque) lors du déplacement interactif du séparateur. Dans le cas contraire, il renvoie false. Cette valeur est contrôlée par la fonction QSplitter.

Voir aussi QSplitter::opaqueResize().

Qt::Orientation QSplitterHandle::orientation() const

Renvoie l'orientation de la poignée. Cette orientation est généralement propagée à partir de QSplitter.

Voir également setOrientation() et QSplitter::orientation().

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

Réimplémente : QWidget::paintEvent(QPaintEvent *event).

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

Réimplémente : QWidget::resizeEvent(QResizeEvent *event).

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

Définit l'orientation de la poignée du séparateur à orientation. Cette orientation est généralement propagée à partir de QSplitter.

Voir également orientation() et QSplitter::setOrientation().

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

Réimplémente une fonction d'accès à la propriété : QWidget::sizeHint.

QSplitter *QSplitterHandle::splitter() const

Renvoie le séparateur associé à cette poignée de séparateur.

Voir aussi 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.