分离和连接图例

注意:这是 带有小部件的图表画廊示例 的一个部分。

默认情况下,图表将在包含图表的相同图形视图中绘制图例。在某些情况下,用户可能希望在其他位置绘制图例。为了实现这一点,可以将图例从图表中分离出来。分离意味着图例不再固定在图表的边缘,图表也不再控制图例的布局。相反,用户控制图例的几何形状,允许自由控制图例的位置和大小。这可以在图表内容之上浮动,甚至绘制在不同的图形场景中。可以通过运行此示例来测试图例的行为。

在此示例中,我们显示了一个条形图系列,允许交互式地添加或删除条形图集合。图例反映系列随条形图集合的添加和/或删除而发生变化。可以使用 QLegend 中的方法控制图例的附加、对齐以及移动和调整大小。

当图例被分离后,它可以自由地调整大小和位置。如果启用图例的交互功能,用户可以自由地拖动和调整图例的大小。如果用户将图例拖离图表的任何一边,它将自动重新附加到图表的那一边。

在这里,我们使图例可见,并将其对齐到图表的底部。

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

此片段显示了如何将图例从图表中分离出来。

legend->detachFromChart();

在这里,我们将图例重新附加到图表。背景已变为不可见。

legend->attachToChart();

在这里,我们连接到当图例被分离或附加时发出的信号,在分离时打开背景,在附加时关闭背景。这使得在图例分离时更容易看到图例内部的元素排列。

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

此示例展示了如何使用鼠标之类的指示设备使图例对用户交互。

legend->setInteractive(true);

此示例展示了当图例不可交互时如何设置分离图例的尺寸。设置新值后,我们调用 update 以在屏幕上显示更改。

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

© 2024 Qt 公司有限公司。此处包含的文档贡献的版权归其各自的所有者所有。本提供的文档根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款许可。Qt 和相应的标志是芬兰的 Qt 公司及其它国家的注册商标。所有其他商标均为其各自所有者的财产。