Ablösen und Anfügen von Legenden

Hinweis: Dies ist Teil des Beispiels für die Diagramme mit Widgets-Galerie.

Standardmäßig zeichnet das Diagramm die Legende innerhalb der gleichen Grafikansicht, in der das Diagramm enthalten ist. In manchen Fällen möchte der Benutzer die Legende an einer anderen Stelle zeichnen. Um dies zu ermöglichen, kann die Legende vom Diagramm abgetrennt werden. Das Ablösen bedeutet, dass die Legende nicht mehr an einem Rand des Diagramms befestigt ist und das Diagramm das Layout der Legende nicht mehr steuert. Stattdessen wird die Geometrie der Legende vom Benutzer gesteuert, so dass er die Position und Größe der Legende frei bestimmen kann. Diese kann über dem Inhalt des Diagramms schweben oder sogar in einer anderen Grafikszene gezeichnet werden. Das Verhalten der Legende kann anhand dieses Beispiels getestet werden.

In diesem Beispiel zeigen wir eine Balkenreihe, die es erlaubt, interaktiv Balkengruppen hinzuzufügen oder zu entfernen. Die Legende spiegelt die Änderungen in der Reihe wider, wenn Balkensätze hinzugefügt und/oder entfernt werden. Die Anbringung der Legende, ihre Ausrichtung und die Möglichkeit, sie zu verschieben und in der Größe zu verändern, können mit Methoden in QLegend gesteuert werden.

Wenn die Legende abgetrennt ist, kann sie in der Größe und Position frei verändert werden. Wenn die interaktive Funktion der Legende aktiviert ist, kann die Legende vom Benutzer frei verschoben und in der Größe verändert werden. Wenn der Benutzer die Legende von einer Seite des Diagramms wegzieht, wird sie automatisch wieder an dieser Seite des Diagramms befestigt.

Hier schalten wir die Legende sichtbar und richten sie am unteren Rand des Diagramms aus.

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

Dieser Ausschnitt zeigt, wie man die Legende vom Diagramm ablöst.

legend->detachFromChart();

Hier wird die Legende wieder an das Diagramm angehängt. Der Hintergrund wird unsichtbar gemacht.

legend->attachToChart();

Hier stellen wir eine Verbindung zu dem Signal her, das ausgegeben wird, wenn die Legende abgetrennt oder angehängt wird, und schalten ihren Hintergrund ein, wenn sie abgetrennt ist, und aus, wenn sie angehängt ist. Auf diese Weise ist es einfacher zu sehen, wie die Elemente innerhalb der Legende angeordnet sind, wenn sie abgetrennt ist.

connect(legend, &QLegend::attachedToChartChanged, [legend, this](bool attachedToChart) {
    m_toggleAttachedButton->setChecked(attachedToChart);
    legend->setBackgroundVisible(!attachedToChart);
    m_geometrySettings->setDisabled(attachedToChart);
});

Hier wird gezeigt, wie man die Legende für den Benutzer interaktiv macht, wenn er ein Zeigegerät wie eine Maus verwendet.

legend->setInteractive(true);

Hier wird gezeigt, wie wir die Abmessungen der abgetrennten Legende festlegen, wenn die Legende nicht interaktiv ist. Nach dem Einstellen der neuen Werte rufen wir update auf, um die Änderungen auf dem Bildschirm anzuzeigen.

    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();

© 2025 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.