Utilisation des marqueurs de légende
Note : Ceci fait partie de l'exemple de la galerie Charts with Widgets.
Dans cet exemple, nous créons une application qui utilise le signal QLegendMarker clicked pour afficher/masquer la série correspondante dans un graphique. Le bouton connect marker connecte un signal clicked provenant de tous les marqueurs d'une légende au slot handleMarkerClicked.

Notre application comporte des boutons permettant d'ajouter ou de supprimer une série dans un graphique et un bouton permettant de connecter ou de déconnecter le signal "clicked" des marqueurs de la légende à notre gestionnaire. Dans l'image ci-dessus, nous avons connecté les marqueurs et cliqué sur l'un d'entre eux.
// Connect all markers to handler const auto markers = m_chart->legend()->markers(); for (QLegendMarker *marker : markers) { // Disconnect possible existing connection to avoid multiple connections QObject::disconnect(marker, &QLegendMarker::clicked, this, &LegendMarkersWidget::handleMarkerClicked); QObject::connect(marker, &QLegendMarker::clicked, this, &LegendMarkersWidget::handleMarkerClicked); }
Ici, nous connectons les marqueurs de la légende à notre gestionnaire. Pour éviter de connecter le même marqueur plus d'une fois, nous le déconnectons d'abord.
const auto markers = m_chart->legend()->markers(); for (QLegendMarker *marker : markers) { QObject::disconnect(marker, &QLegendMarker::clicked, this, &LegendMarkersWidget::handleMarkerClicked); }
Ici, nous déconnectons tous les marqueurs de notre gestionnaire.
auto marker = qobject_cast<QLegendMarker *>(sender()); Q_ASSERT(marker);
Dans notre gestionnaire, l'expéditeur de l'événement est d'abord converti en QLegendMarker.
switch (marker->type())
Ensuite, nous vérifions le type du marqueur. Cela est nécessaire si nous voulons accéder aux méthodes détaillées du marqueur et lui attribuer le bon type. Si tout ce dont nous avons besoin est le pointeur vers QAbstractSeries, le casting n'est pas nécessaire. Dans le cas d'une série de camemberts ou de barres, il se peut que nous ayons besoin du pointeur vers un type connexe QPieSlice ou QBarSet.
// Toggle visibility of series marker->series()->setVisible(!marker->series()->isVisible()); // Turn legend marker back to visible, since hiding series also hides the marker // and we don't want it to happen now. marker->setVisible(true);
Nous voulons faire basculer la visibilité de la série lorsque le marqueur est cliqué. Pour ce faire, nous obtenons le pointeur d'une série connexe à partir du marqueur et nous modifions sa visibilité. Étant donné que le marqueur de légende suit la visibilité de la série par défaut, nous rétablissons également la visibilité du marqueur. Si nous ne le faisons pas, le marqueur sera invisible dans la légende et nous ne pourrons plus cliquer dessus.
// Dim the marker, if series is not visible qreal alpha = 1.0; if (!marker->series()->isVisible()) alpha = 0.5; QColor color; QBrush brush = marker->labelBrush(); color = brush.color(); color.setAlphaF(alpha); brush.setColor(color); marker->setLabelBrush(brush); brush = marker->brush(); color = brush.color(); color.setAlphaF(alpha); brush.setColor(color); marker->setBrush(brush); QPen pen = marker->pen(); color = pen.color(); color.setAlphaF(alpha); pen.setColor(color); marker->setPen(pen);
Au lieu de rendre le marqueur invisible lorsque la série est cachée, nous diminuons la couleur du marqueur. Pour ce faire, nous modifions la couleur du laberBrush.
© 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.