QSplitter Class
La classe QSplitter implémente un widget de séparation. Plus d'informations...
| En-tête : | #include <QSplitter> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Widgets)target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake : | QT += widgets |
| Héritages : | QFrame |
Propriétés
- childrenCollapsible : bool
- handleWidth : int
- opaqueResize : bool
- orientation : Qt::Orientation
Fonctions publiques
| QSplitter(QWidget *parent = nullptr) | |
| QSplitter(Qt::Orientation orientation, QWidget *parent = nullptr) | |
| virtual | ~QSplitter() |
| void | addWidget(QWidget *widget) |
| bool | childrenCollapsible() const |
| int | count() const |
| void | getRange(int index, int *min, int *max) const |
| QSplitterHandle * | handle(int index) const |
| int | handleWidth() const |
| int | indexOf(QWidget *widget) const |
| void | insertWidget(int index, QWidget *widget) |
| bool | isCollapsible(int index) const |
| bool | opaqueResize() const |
| Qt::Orientation | orientation() const |
| void | refresh() |
| QWidget * | replaceWidget(int index, QWidget *widget) |
| bool | restoreState(const QByteArray &state) |
| QByteArray | saveState() const |
| void | setChildrenCollapsible(bool) |
| void | setCollapsible(int index, bool collapse) |
| void | setHandleWidth(int) |
| void | setOpaqueResize(bool opaque = true) |
| void | setOrientation(Qt::Orientation) |
| void | setSizes(const QList<int> &list) |
| void | setStretchFactor(int index, int stretch) |
| QList<int> | sizes() const |
| QWidget * | widget(int index) const |
Fonctions publiques réimplémentées
| virtual QSize | minimumSizeHint() const override |
| virtual QSize | sizeHint() const override |
Signaux
| void | splitterMoved(int pos, int index) |
Fonctions protégées
| int | closestLegalPosition(int pos, int index) |
| virtual QSplitterHandle * | createHandle() |
| void | moveSplitter(int pos, int index) |
| void | setRubberBand(int pos) |
Fonctions protégées réimplémentées
| virtual void | changeEvent(QEvent *ev) override |
| virtual void | childEvent(QChildEvent *c) override |
| virtual bool | event(QEvent *e) override |
| virtual void | resizeEvent(QResizeEvent *) override |
Description détaillée
Un séparateur permet à l'utilisateur de contrôler la taille des widgets enfants en faisant glisser la limite entre eux. Un nombre quelconque de widgets peut être contrôlé par un seul séparateur. L'utilisation typique d'un QSplitter consiste à créer plusieurs widgets et à les ajouter à l'aide de insertWidget() ou addWidget().
L'exemple suivant montre les widgets QListView, QTreeView et QTextEdit côte à côte, avec deux poignées de séparation :
QSplitter *splitter = new QSplitter(parent); QListView *listview = new QListView; QTreeView *treeview = new QTreeView; QTextEdit *textedit = new QTextEdit; splitter->addWidget(listview); splitter->addWidget(treeview); splitter->addWidget(textedit);
Si un widget se trouve déjà à l'intérieur d'un QSplitter lorsque insertWidget() ou addWidget() est appelé, il se déplacera vers la nouvelle position. Cela peut être utilisé pour réorganiser ultérieurement les widgets dans le séparateur. Vous pouvez utiliser indexOf(), widget() et count() pour accéder aux widgets à l'intérieur du séparateur.
Un QSplitter par défaut dispose ses enfants horizontalement (côte à côte) ; vous pouvez utiliser setOrientation(Qt::Vertical) pour disposer ses enfants verticalement.
Par défaut, tous les widgets peuvent être aussi grands ou aussi petits que l'utilisateur le souhaite, entre minimumSizeHint() (ou minimumSize()) et maximumSize() des widgets.
QSplitter redimensionne ses enfants dynamiquement par défaut. Si vous préférez que QSplitter redimensionne les enfants uniquement à la fin d'une opération de redimensionnement, appelez setOpaqueResize(false).
La distribution initiale de la taille entre les widgets est déterminée en multipliant la taille initiale par le facteur d'étirement. Vous pouvez également utiliser setSizes() pour définir la taille de tous les widgets. La fonction sizes() renvoie les tailles définies par l'utilisateur. Vous pouvez également enregistrer et restaurer les tailles des widgets à partir d'un site QByteArray en utilisant respectivement les fonctions saveState() et restoreState().
Lorsque vous hide() un enfant, son espace est réparti entre les autres enfants. Il sera réintégré lorsque vous show() l'aurez à nouveau.
Voir aussi QSplitterHandle, QHBoxLayout, QVBoxLayout, et QTabWidget.
Documentation sur les propriétés
childrenCollapsible : bool
Cette propriété indique si les widgets enfants peuvent être redimensionnés à la taille 0 par l'utilisateur
Par défaut, les enfants sont réductibles. Il est possible d'activer et de désactiver la réduction des enfants individuels à l'aide de setCollapsible().
Fonctions d'accès :
| bool | childrenCollapsible() const |
| void | setChildrenCollapsible(bool) |
Voir également setCollapsible().
handleWidth : int
Cette propriété définit la largeur des poignées du séparateur
Par défaut, cette propriété contient une valeur qui dépend de la plateforme et des préférences de style de l'utilisateur.
Si vous définissez handleWidth à 1 ou 0, la zone de saisie actuelle s'étendra de manière à chevaucher quelques pixels de ses widgets respectifs.
Fonctions d'accès :
| int | handleWidth() const |
| void | setHandleWidth(int) |
opaqueResize : bool
Renvoie true si les widgets sont redimensionnés dynamiquement (de manière opaque) lors du déplacement interactif du séparateur. Sinon, il renvoie false.
Le comportement de redimensionnement par défaut dépend du style (déterminé par l'indice de style SH_Splitter_OpaqueResize). Cependant, vous pouvez le remplacer en appelant setOpaqueResize()
Fonctions d'accès :
| bool | opaqueResize() const |
| void | setOpaqueResize(bool opaque = true) |
Voir aussi QStyle::StyleHint.
orientation : Qt::Orientation
Cette propriété définit l'orientation du séparateur
Par défaut, l'orientation est horizontale (c'est-à-dire que les widgets sont disposés côte à côte). Les orientations possibles sont Qt::Horizontal et Qt::Vertical.
Fonctions d'accès :
| Qt::Orientation | orientation() const |
| void | setOrientation(Qt::Orientation) |
Voir également QSplitterHandle::orientation().
Documentation des fonctions membres
[explicit] QSplitter::QSplitter(QWidget *parent = nullptr)
Construit un séparateur horizontal avec l'argument parent transmis au constructeur QFrame.
Voir aussi setOrientation().
[explicit] QSplitter::QSplitter(Qt::Orientation orientation, QWidget *parent = nullptr)
Construit un séparateur avec les données orientation et parent.
Voir aussi setOrientation().
[virtual noexcept] QSplitter::~QSplitter()
Détruit le séparateur. Tous les enfants sont supprimés.
void QSplitter::addWidget(QWidget *widget)
Ajoute le site widget à la disposition du séparateur après tous les autres éléments.
Si widget se trouve déjà dans le séparateur, il sera déplacé à la nouvelle position.
Remarque : le séparateur est propriétaire du widget.
Voir aussi insertWidget(), widget() et indexOf().
[override virtual protected] void QSplitter::changeEvent(QEvent *ev)
Réimplémente : QFrame::changeEvent(QEvent *ev).
[override virtual protected] void QSplitter::childEvent(QChildEvent *c)
Réimplémente : QObject::childEvent(QChildEvent *event).
Indique au séparateur que le widget enfant décrit par c a été inséré ou supprimé.
Cette méthode est également utilisée pour gérer la situation où un widget est créé avec le séparateur comme parent mais n'est pas explicitement ajouté avec insertWidget() ou addWidget(). C'est une question de compatibilité et ce n'est pas la manière recommandée de placer des widgets dans un séparateur dans un nouveau code. Veuillez utiliser insertWidget() ou addWidget() dans le nouveau code.
Voir aussi addWidget() et insertWidget().
[protected] int QSplitter::closestLegalPosition(int pos, int index)
Renvoie la position légale la plus proche de pos du widget à index.
Pour les langues allant de droite à gauche, telles que l'arabe et l'hébreu, la disposition des séparateurs horizontaux est inversée. Les positions sont alors mesurées à partir du bord droit du widget.
Voir aussi getRange().
int QSplitter::count() const
Renvoie le nombre de widgets contenus dans la disposition du séparateur.
Voir aussi widget() et handle().
[virtual protected] QSplitterHandle *QSplitter::createHandle()
Renvoie une nouvelle poignée de séparateur en tant que widget enfant de ce séparateur. Cette fonction peut être réimplémentée dans les sous-classes afin de prendre en charge les poignées personnalisées.
Voir aussi handle() et indexOf().
[override virtual protected] bool QSplitter::event(QEvent *e)
Réimplémente : QFrame::event(QEvent *e).
void QSplitter::getRange(int index, int *min, int *max) const
Renvoie la plage valide du séparateur à index dans *min et *max si min et max ne sont pas 0.
QSplitterHandle *QSplitter::handle(int index) const
Renvoie la poignée située à gauche (ou au-dessus) de l'élément de la présentation du séparateur à l'adresse index, ou nullptr s'il n'y a pas d'élément de ce type. La poignée à l'index 0 est toujours cachée.
Pour les langues allant de droite à gauche, telles que l'arabe et l'hébreu, la disposition des séparateurs horizontaux est inversée. La poignée se trouve à droite du widget à l'adresse index.
Voir également count(), widget(), indexOf(), createHandle() et setHandleWidth().
int QSplitter::indexOf(QWidget *widget) const
Renvoie l'index dans la disposition du séparateur de l'élément spécifié widget, ou -1 si widget n'est pas trouvé. Cela fonctionne également pour les poignées.
Les poignées sont numérotées à partir de 0. Il y a autant de poignées que de widgets enfants, mais la poignée à la position 0 est toujours cachée.
Voir aussi count() et widget().
void QSplitter::insertWidget(int index, QWidget *widget)
Insère le site widget spécifié dans la disposition du séparateur à l'endroit indiqué index.
Si widget se trouve déjà dans le séparateur, il sera déplacé à la nouvelle position.
Si index est un index non valide, le widget sera inséré à la fin.
Remarque : le séparateur est propriétaire du widget.
Voir également addWidget(), indexOf() et widget().
bool QSplitter::isCollapsible(int index) const
Renvoie true si le widget à index est pliable, sinon renvoie false.
[override virtual] QSize QSplitter::minimumSizeHint() const
Réimplémente une fonction d'accès à la propriété : QWidget::minimumSizeHint.
[protected] void QSplitter::moveSplitter(int pos, int index)
Déplace le bord gauche ou supérieur de la poignée du séparateur à index aussi près que possible de la position pos, qui est la distance du bord gauche ou supérieur du widget.
Pour les langues allant de droite à gauche, telles que l'arabe et l'hébreu, la disposition des séparateurs horizontaux est inversée. pos est alors la distance par rapport au bord droit du widget.
Voir également splitterMoved(), closestLegalPosition() et getRange().
void QSplitter::refresh()
Met à jour l'état du séparateur. Vous ne devriez pas avoir besoin d'appeler cette fonction.
QWidget *QSplitter::replaceWidget(int index, QWidget *widget)
Remplace le widget dans la disposition du séparateur à l'adresse index par widget.
Renvoie le widget qui vient d'être remplacé si index est valide et si widget n'est pas déjà un enfant du séparateur. Sinon, il renvoie null et aucun remplacement ou ajout n'est effectué.
La géométrie du widget nouvellement inséré sera la même que celle du widget qu'il remplace. Ses états visible et réduit sont également hérités.
Remarque : le séparateur prend la propriété de widget et définit le parent du widget remplacé à null.
Remarque : Comme widget introduit reparented dans le séparateur, son geometry peut ne pas être défini immédiatement, mais seulement après que widget ait reçu les événements appropriés.
Voir aussi insertWidget() et indexOf().
[override virtual protected] void QSplitter::resizeEvent(QResizeEvent *)
Réimplémente : QWidget::resizeEvent(QResizeEvent *event).
bool QSplitter::restoreState(const QByteArray &state)
Restaure la disposition du séparateur à l'adresse state spécifiée. Renvoie true si l'état est restauré, sinon false.
Cette fonction est généralement utilisée conjointement avec QSettings pour restaurer la taille d'une session précédente. Voici un exemple :
Restaurer l'état du séparateur :
QSettings settings; splitter->restoreState(settings.value("splitterSizes").toByteArray());
L'échec de la restauration de la disposition du séparateur peut résulter de données invalides ou obsolètes dans le tableau d'octets fourni.
Voir aussi saveState().
QByteArray QSplitter::saveState() const
Sauvegarde l'état de la disposition du séparateur.
Cette fonction est généralement utilisée avec QSettings pour mémoriser la taille lors d'une prochaine session. Un numéro de version est stocké dans les données. Voici un exemple :
QSettings settings; settings.setValue("splitterSizes", splitter->saveState());
Voir aussi restoreState().
void QSplitter::setCollapsible(int index, bool collapse)
Définit si le widget enfant à index est repliable à collapse.
Par défaut, les widgets enfants sont repliables, ce qui signifie que l'utilisateur peut les redimensionner jusqu'à la taille 0, même s'ils ont une adresse minimumSize() ou minimumSizeHint() non nulle. Ce comportement peut être modifié pour chaque widget en appelant cette fonction, ou globalement pour tous les widgets du séparateur en définissant la propriété childrenCollapsible.
Voir aussi isCollapsible() et childrenCollapsible.
[protected] void QSplitter::setRubberBand(int pos)
Affiche un élastique à la position pos. Si pos est négatif, l'élastique est retiré.
void QSplitter::setSizes(const QList<int> &list)
Définit les tailles respectives des widgets enfants aux valeurs données dans list.
Si le séparateur est horizontal, les valeurs définissent la largeur de chaque widget en pixels, de gauche à droite. Si le séparateur est vertical, la hauteur de chaque widget est définie, de haut en bas.
Les valeurs supplémentaires dans list sont ignorées. Si list contient trop peu de valeurs, le résultat est indéfini, mais le programme se comporte toujours correctement.
La taille globale du widget de séparation n'est pas affectée. Au lieu de cela, tout espace supplémentaire/manquant est réparti entre les widgets en fonction du poids relatif des tailles.
Si vous spécifiez une taille de 0, le widget sera invisible. Les politiques de taille des widgets sont préservées. En d'autres termes, une valeur inférieure à l'indice de taille minimale du widget concerné sera remplacée par la valeur de l'indice.
Voir également sizes().
void QSplitter::setStretchFactor(int index, int stretch)
Met à jour la politique de taille du widget à la position index pour avoir un facteur d'étirement de stretch.
stretch n'est pas le facteur d'étirement effectif ; le facteur d'étirement effectif est calculé en prenant la taille initiale du widget et en la multipliant par stretch.
Cette fonction est fournie pour des raisons de commodité. Elle est équivalente à
QWidget *widget = splitter->widget(index); QSizePolicy policy = widget->sizePolicy(); policy.setHorizontalStretch(stretch); policy.setVerticalStretch(stretch); widget->setSizePolicy(policy);
Voir également setSizes() et widget().
[override virtual] QSize QSplitter::sizeHint() const
Réimplémente : QFrame::sizeHint() const.
QList<int> QSplitter::sizes() const
Renvoie une liste des paramètres de taille de tous les widgets de ce séparateur.
Si l'orientation du séparateur est horizontale, la liste contient la largeur des widgets en pixels, de gauche à droite ; si l'orientation est verticale, la liste contient la hauteur des widgets en pixels, de haut en bas.
En donnant ces valeurs à la fonction setSizes() d'un autre séparateur, on obtient un séparateur ayant la même disposition que celui-ci.
Notez que les widgets invisibles ont une taille de 0.
Voir également setSizes().
[signal] void QSplitter::splitterMoved(int pos, int index)
Ce signal est émis lorsque la poignée du séparateur à une position particulière index a été déplacée à la position pos.
Pour les langues allant de droite à gauche, telles que l'arabe et l'hébreu, la disposition des séparateurs horizontaux est inversée. pos est alors la distance par rapport au bord droit du widget.
Voir également moveSplitter().
QWidget *QSplitter::widget(int index) const
Renvoie le widget situé à l'adresse index dans la disposition du séparateur, ou nullptr s'il n'existe pas de widget de ce type.
Voir aussi count(), handle(), indexOf(), et insertWidget().
© 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.