qt QAreaLegendMarker详解
1. 概述
QAreaLegendMarker
是 Qt Charts 模块中的一部分,用于在图例(Legend)中表示 QAreaSeries
的标记。它负责显示区域图的图例项,通常包含区域颜色样例和对应的描述文字。图例标记和对应的区域图关联,显示区域的名称及其样式,并且可以通过鼠标点击、悬停等方式交互,或者自定义图例项的样式。
2. 重要方法
- QAreaLegendMarker::series() const:返回该图例标记所关联的
QAreaSeries
数据系列。 - QAreaLegendMarker::setVisible(bool visible):设置图例标记的可见性。若设置为
false
,则该图例标记将不可见。 - QAreaLegendMarker::isVisible() const:返回图例标记是否可见。
void setBrush(const QBrush &brush)
:设置标记的填充样式(颜色或渐变)。
QString label() const
:获取图例标记的文本标签。void setLabel(const QString &label)
:设置图例标记的文本标签。
3、信号
void nameChanged()
:该信号在图例标记的名称发生变化时发出。void opacityChanged():
当图例标记的不透明度发生变化时,该信号被发出。void useOpenGLChanged():
当图例标记的 OpenGL 使用状态发生变化时触发的信号。void visibleChanged():
当图例标记的可见性发生变化时发出此信号。
4、实例
#include <QApplication>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QValueAxis>
#include <QtCharts/QAreaSeries>
QT_CHARTS_USE_NAMESPACEint main(int argc, char *argv[])
{QApplication a(argc, argv);// 创建两条线系列QLineSeries *upperSeries = new QLineSeries();QLineSeries *lowerSeries = new QLineSeries();// 设置上边界线的数据upperSeries->append(0, 10);upperSeries->append(1, 20);upperSeries->append(2, 15);upperSeries->append(3, 25);// 设置下边界线的数据lowerSeries->append(0, 5);lowerSeries->append(1, 10);lowerSeries->append(2, 8);lowerSeries->append(3, 15);// 创建 QAreaSeriesQAreaSeries *areaSeries = new QAreaSeries(upperSeries, lowerSeries);areaSeries->setName("示例区域图");// 创建图表QChart *chart = new QChart();chart->addSeries(areaSeries);chart->setTitle("QAreaLegendMarker 示例");chart->createDefaultAxes();// 获取图例并自定义QLegend *legend = chart->legend();legend->setVisible(true);legend->setAlignment(Qt::AlignBottom);// 获取图例标记(QAreaLegendMarker)QList<QLegendMarker *> markers = legend->markers(areaSeries);for (QLegendMarker *marker : markers) {QAreaLegendMarker *areaMarker = qobject_cast<QAreaLegendMarker *>(marker);if (areaMarker) {// 自定义图例文本areaMarker->setLabel("自定义区域图例");// 自定义图例填充样式QBrush customBrush(Qt::yellow);areaMarker->setBrush(customBrush);// 添加点击事件QObject::connect(areaMarker, &QAreaLegendMarker::clicked, []() {qDebug() << "图例标记被点击!";});}}// 创建视图QChartView *chartView = new QChartView(chart);chartView->setRenderHint(QPainter::Antialiasing);// 显示窗口QMainWindow window;window.setCentralWidget(chartView);window.resize(800, 600);window.show();return a.exec();
}
觉得有帮助的话,打赏一下呗。。