Cómo quitar y poner leyendas

Nota: Esto forma parte del ejemplo de la Galería de Gráficos con Widgets.

Por defecto, el gráfico dibuja la leyenda dentro de la misma vista gráfica que contiene el gráfico. En algunos casos, el usuario puede querer dibujar la leyenda en otro lugar. Para ello, la leyenda puede separarse del gráfico. Desvincularse significa que la leyenda ya no está fijada a un borde del gráfico, y que el gráfico ya no controla el diseño de la leyenda. En su lugar, la geometría de la leyenda es controlada por el usuario, lo que permite un control libre de la ubicación y el tamaño de la leyenda. Ésta puede flotar sobre el contenido del gráfico, o incluso dibujarse en una escena gráfica diferente. El comportamiento de la leyenda puede probarse ejecutando este ejemplo.

En este ejemplo mostramos una serie de barras, permitiendo añadir o eliminar series de barras de forma interactiva. La leyenda refleja los cambios en la serie a medida que se añaden y/o eliminan conjuntos de barras. La fijación de la leyenda, su alineación, y su capacidad para ser movida y redimensionada pueden ser controladas usando métodos en QLegend.

Cuando la leyenda está desprendida, se puede redimensionar y posicionar libremente. Si la función interactiva de la leyenda está activada, el usuario puede arrastrarla y cambiar su tamaño libremente. Si el usuario arrastra la leyenda fuera de cualquier lado del gráfico, se volverá a fijar automáticamente a ese lado del gráfico.

Captura de pantalla que muestra un ejemplo de desprendimiento de leyenda con un gráfico de barras y diferentes opciones para configurar el gráfico

Captura de pantalla que muestra otro ejemplo de desprendimiento de leyenda con un gráfico de barras y diferentes opciones para configurar el gráfico

Aquí hacemos visible la leyenda y fijamos su alineación en la parte inferior del gráfico.

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

Este fragmento muestra cómo separar la leyenda del gráfico.

legend->detachFromChart();

Aquí volvemos a fijar la leyenda al gráfico. El fondo se vuelve invisible.

legend->attachToChart();

Aquí nos conectamos a la señal emitida cuando la leyenda se separa o se une, encendiendo su fondo cuando se separa y apagándolo cuando se une. De este modo es más fácil ver cómo se organizan los elementos dentro de la leyenda cuando ésta se separa.

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

Esto muestra cómo hacer que la leyenda sea interactiva para el usuario que utiliza un dispositivo señalador como un ratón.

legend->setInteractive(true);

Esto muestra cómo establecemos las dimensiones de la leyenda separada si la leyenda no es interactiva. Después de establecer los nuevos valores, llamamos a update para mostrar los cambios en pantalla.

    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.