分离和连接图例
注意:这是 带有小部件的图表画廊示例 的一个部分。
默认情况下,图表将在包含图表的相同图形视图中绘制图例。在某些情况下,用户可能希望在其他位置绘制图例。为了实现这一点,可以将图例从图表中分离出来。分离意味着图例不再固定在图表的边缘,图表也不再控制图例的布局。相反,用户控制图例的几何形状,允许自由控制图例的位置和大小。这可以在图表内容之上浮动,甚至绘制在不同的图形场景中。可以通过运行此示例来测试图例的行为。
在此示例中,我们显示了一个条形图系列,允许交互式地添加或删除条形图集合。图例反映系列随条形图集合的添加和/或删除而发生变化。可以使用 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 公司及其它国家的注册商标。所有其他商标均为其各自所有者的财产。