qt QAreaSeries详解
1、概述
QAreaSeries
是 Qt Charts 模块中用于绘制面积图的类。面积图通过填充两个数据系列之间的区域(或单个数据系列与基线之间的区域)来可视化数据,常用于展示数据的变化趋势或对比两组数据的差异。它支持两种模式:两个 QLineSeries
之间的区域,以及单个 QLineSeries
与 X 轴之间的区域。
2、重要方法
QAreaSeries(QLineSeries *upperSeries, QLineSeries *lowerSeries)
:构造函数,指定上下边界线。
setUpperSeries(QLineSeries *series)
:设置上边界线。setLowerSeries(QLineSeries *series)
:设置下边界线。
setBrush(const QBrush &brush)
:设置填充区域的画刷(颜色/渐变)。setPen(const QPen &pen)
:设置边框线的样式。setOpacity(qreal opacity)
:设置填充区域的透明度(0~1)。
setPointLabelsVisible(bool visible)
:设置数据点标签是否可见。setPointsVisible(bool visible)
:设置数据点是否可见,并确定是否在线上绘制这些点。
3、信号
borderColorChanged(QColor color)
:当线条(画笔)颜色变为color
时,发出此信号。colorChanged(QColor color)
:当填充(画刷)颜色变为color
时,发出此信号。
clicked(const QPointF &point)
:当用户在面积图中单击以触发按下point
时,将发出此信号。doubleClicked(const QPointF &point)
:当用户通过双击point
触发面积图中的第一次按下时,将发出此信号。hovered(const QPointF &point, bool state)
:当用户将鼠标指针悬停在系列上或将其从系列中移开时,将发出此信号。point
显示悬停事件的原点(坐标)。当光标悬停在面积图上时state
为true
。否则为false
。pressed(const QPointF &point)
:当用户按下面积图中由point
指定的点时,将发出此信号。released(const QPointF &point)
:当用户释放在面积图中某个point
上释放按下状态时,会发出此信号。
pointLabelsClippingChanged(bool clipping)
:当数据点标签的剪裁设置clipping
发生改变时,将发出此信号。pointLabelsColorChanged(QColor color)
:当数据点标签的颜色改变为color
时,发出此信号。pointLabelsFontChanged(QFont font)
:当数据点标签的字体改变为font
时,发出此信号。pointLabelsFormatChanged(QString format)
:当数据点标签的格式改变为format
时,发出此信号。pointLabelsVisibilityChanged(bool visible)
:当数据点标签的可见属性改变为visible
时,发出此信号。
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, 5);upperSeries->append(1, 15);upperSeries->append(2, 10);upperSeries->append(3, 20);// 设置下边界线的数据点lowerSeries->append(0, 0);lowerSeries->append(1, 5);lowerSeries->append(2, 3);lowerSeries->append(3, 10);// 创建 QAreaSeries(区域图)QAreaSeries *areaSeries = new QAreaSeries(upperSeries, lowerSeries);areaSeries->setName("示例区域图");// 设置填充样式QBrush brush(Qt::blue);brush.setStyle(Qt::SolidPattern);areaSeries->setBrush(brush);// 设置边框线样式QPen pen(Qt::darkBlue);pen.setWidth(2);areaSeries->setPen(pen);// 创建图表对象QChart *chart = new QChart();chart->addSeries(areaSeries);chart->setTitle("QAreaSeries 示例");chart->createDefaultAxes();// 设置轴范围QValueAxis *axisX = new QValueAxis();axisX->setRange(0, 3);axisX->setTitleText("X 轴");chart->setAxisX(axisX, areaSeries);QValueAxis *axisY = new QValueAxis();axisY->setRange(0, 20);axisY->setTitleText("Y 轴");chart->setAxisY(axisY, areaSeries);// 创建视图QChartView *chartView = new QChartView(chart);chartView->setRenderHint(QPainter::Antialiasing);// 显示窗口QMainWindow window;window.setCentralWidget(chartView);window.resize(800, 600);window.show();return a.exec();
}
觉得有帮助的话,打赏一下呗。。
需要商务合作(定制程序)的欢迎私信!!