Détacher et rattacher des légendes

Remarque : ceci fait partie de l'exemple « Galerie de graphiques avec widgets ».

Par défaut, le graphique affiche la légende dans la même vue graphique que celle qui le contient. Dans certains cas, l’utilisateur peut souhaiter afficher la légende à un autre endroit. Pour ce faire, il est possible de détacher la légende du graphique. Le détachement signifie que la légende n’est plus fixée à un bord du graphique et que ce dernier ne contrôle plus sa mise en page. À la place, la géométrie de la légende est contrôlée par l’utilisateur, ce qui permet de contrôler librement son emplacement et sa taille. Elle peut ainsi flotter au-dessus du contenu du graphique, voire être dessinée dans une autre scène graphique. Le comportement de la légende peut être testé en exécutant cet exemple.

Dans cet exemple, nous présentons une série de barres, permettant d’ajouter ou de supprimer des ensembles de barres de manière interactive. La légende reflète les modifications apportées à la série à mesure que des ensembles de barres sont ajoutés et/ou supprimés. La fixation de la légende, son alignement, ainsi que sa capacité à être déplacée et redimensionnée peuvent être contrôlés à l’aide des méthodes disponibles dans ` QLegend`.

Lorsque la légende est détachée, elle peut être redimensionnée et positionnée librement. Si la fonctionnalité interactive de la légende est activée, l'utilisateur peut la faire glisser et la redimensionner librement. Si l'utilisateur fait glisser la légende hors d'un côté quelconque du graphique, elle se rattachera automatiquement à ce côté du graphique.

Capture d'écran illustrant un exemple de légende détachable avec un graphique à barres et différentes options de configuration du graphique

Capture d'écran présentant un autre exemple de détachement de la légende avec un graphique à barres et différentes options de configuration du graphique

Ici, nous rendons la légende visible et définissons son alignement en bas du graphique.

m_chart->legend()->setVisible(true);
m_chart->legend()->setAlignment(Qt::AlignBottom);

Cet extrait de code montre comment détacher la légende du graphique.

legend->detachFromChart();

Ici, nous rattachons la légende au graphique. L'arrière-plan est masqué.

legend->attachToChart();

Ici, nous nous connectons au signal émis lorsque la légende est détachée ou rattachée, en activant son arrière-plan lorsqu’elle est détachée et en le désactivant lorsqu’elle est rattachée. Cela permet de voir plus facilement 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 périphérique de pointage tel qu’une souris.

legend->setInteractive(true);

Ceci montre comment définir les dimensions de la légende détachée si celle-ci n’est pas interactive. Après avoir défini les nouvelles valeurs, nous appelons la méthode `update` pour afficher les modifications à 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.