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_NAMESPACE
int 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();
}
觉得有帮助的话,打赏一下呗。。
需要商务合作(定制程序)的欢迎私信!!