Détacher et attacher les légendes
Note : Ceci fait partie de l'exemple de la galerie Charts with Widgets.
Par défaut, le graphique dessine la légende dans la même vue graphique que le graphique. Dans certains cas, l'utilisateur peut souhaiter dessiner la légende ailleurs. Pour ce faire, la légende peut être détachée du graphique. Le détachement signifie que la légende n'est plus fixée à un bord du graphique et que le graphique ne contrôle plus la disposition de la légende. Au lieu de cela, la géométrie de la légende est contrôlée par l'utilisateur, ce qui permet de contrôler librement l'emplacement et la taille de la légende. Celle-ci peut flotter au-dessus du contenu du graphique, ou même être dessinée dans une scène graphique différente. Le comportement de la légende peut être testé en exécutant cet exemple.
Dans cet exemple, nous montrons une série de barres, ce qui permet d'ajouter ou de supprimer des ensembles de barres de manière interactive. La légende reflète les changements dans la série au fur et à mesure que des séries de barres sont ajoutées et/ou supprimées. La fixation de la légende, son alignement et sa capacité à être déplacée et redimensionnée peuvent être contrôlés à l'aide des méthodes de QLegend.
Lorsque la légende est détachée, elle peut être redimensionnée et positionnée librement. Si la fonction interactive de la légende est activée, la légende peut être librement déplacée et redimensionnée par l'utilisateur. Si l'utilisateur fait glisser la légende d'un côté du graphique, elle se rattache automatiquement à ce côté du graphique.


Ici, nous rendons la légende visible et définissons son alignement sur le bas du graphique.
m_chart->legend()->setVisible(true); m_chart->legend()->setAlignment(Qt::AlignBottom);
Cet extrait montre comment détacher la légende du graphique.
legend->detachFromChart();
Ici, nous rattachons la légende au graphique. L'arrière-plan est rendu invisible.
legend->attachToChart();
Ici, nous nous connectons au signal émis lorsque la légende est détachée ou attachée, en activant son arrière-plan lorsqu'elle est détachée et en le désactivant lorsqu'elle est attachée. Il est ainsi plus facile de voir comment les éléments à l'intérieur de la légende sont disposés lorsqu'elle est détachée.
connect(legend, &QLegend::attachedToChartChanged, [legend, this](bool attachedToChart) { m_toggleAttachedButton->setChecked(attachedToChart); legend->setBackgroundVisible(!attachedToChart); m_geometrySettings->setDisabled(attachedToChart); });
Ceci montre comment rendre la légende interactive pour l'utilisateur à l'aide d'un dispositif de pointage tel qu'une souris.
legend->setInteractive(true);
Ceci montre comment nous définissons les dimensions de la légende détachée si la légende n'est pas interactive. Après avoir défini les nouvelles valeurs, nous appelons update pour afficher les changements à l'écran.
QRectF geom = m_chart->legend()->geometry(); if (qFuzzyCompare(geom.x(), m_legendPosX->value()) && qFuzzyCompare(geom.y(), m_legendPosY->value()) && qFuzzyCompare(geom.width(), m_legendWidth->value()) && qFuzzyCompare(geom.height(), m_legendHeight->value())) return; m_chart->legend()->setGeometry(QRectF(m_legendPosX->value(), m_legendPosY->value(), m_legendWidth->value(), m_legendHeight->value())); m_chart->legend()->update();
© 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.