QSplitterHandle Class
La classe `QSplitterHandle` offre des fonctionnalités de gestion des poignées pour le séparateur. En savoir plus...
| En-tête : | #include <QSplitterHandle> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake : | QT += widgets |
| Hérite de : | 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 correspond généralement à ce que l'on imagine lorsqu'on pense à un séparateur. Il s'agit de la poignée utilisée pour redimensionner les widgets.
Un développeur lambda utilisant QSplitter n'aura jamais à se soucier de QSplitterHandle. Ce dernier est destiné aux développeurs qui souhaitent disposer de poignées de séparateur offrant des fonctionnalités supplémentaires, telles que des menus contextuels.
La méthode classique pour créer des poignées de séparateur consiste à créer une sous-classe de ` QSplitter `, puis à réimplémenter la méthode ` QSplitter::createHandle()` afin d’instancier la poignée de séparateur 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()` se contente de construire une poignée de séparateur personnalisée, appelée ` 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. Ces détails peuvent être utilisés pour donner aux handles personnalisés des apparences différentes en fonction de l’orientation du splitter.
La complexité d’une sous-classe de poignée personnalisée dépend des tâches qu’elle doit effectuer. 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 selon l’orientation de la poignée. QSplitterHandle fournit une indication de taille raisonnable pour la poignée ; la sous-classe n’a donc pas besoin de réimplémenter la méthode sizeHint() à moins que la poignée ne présente 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 un descripteur « QSplitter » avec les paramètres « orientation » et « parent » indiqués.
[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 s'écrivant de droite à gauche.
Voir également 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émentation de : 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 correspond à 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 s’écrivant de droite à gauche. Cette fonction convertit pos en une 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 de manière dynamique (opaque) lors du déplacement interactif de la barre de séparation. Sinon, renvoie « false ». Cette valeur est contrôlée par la propriété « QSplitter ».
Voir également QSplitter::opaqueResize().
Qt::Orientation QSplitterHandle::orientation() const
Renvoie l'orientation du descripteur. Celle-ci est généralement transmise depuis l'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 sur orientation. Cette valeur est généralement transmise à partir de QSplitter.
Voir également ` orientation()` et ` QSplitter::setOrientation()`.
[override virtual] QSize QSplitterHandle::sizeHint() const
Réimplémente une fonction d'accès pour la propriété : QWidget::sizeHint.
QSplitter *QSplitterHandle::splitter() const
Renvoie le splitter associé à ce descripteur de splitter.
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.