最近使用QT做统计图
QT中自带Chart控件非常好用,但是例子很少,大多数使用的是默认的样式,其实QT提供了设置统计图样式的功能。
下面的例子,包含了从创建到绑定、设置坐标轴、设置曲线到设置样式多个步骤。
QChartView *m_ChartView;
QChart *m_Chart;
QSplineSeries *m_ASeries;
QSplineSeries *m_BSeries;
m_ChartView = new QChartView(ui->chartView); // 绑定UI,chartView是QGraphicsView类型控件
m_Chart = new QChart();
m_ASeries = new QSplineSeries();
m_BSeries = new QSplineSeries();
m_ASeries->setName("A"); // A曲线名称
m_BSeries->setName("B"); // B曲线名称
QDateTimeAxis *axisX = new QDateTimeAxis(); // 时间类坐标轴
QValueAxis *axisY = new QValueAxis(); // 数值类坐标轴
axisX->setMin(QDateTime::currentDateTime().addSecs(-60*1)); // -60s
axisX->setMax(QDateTime::currentDateTime().addSecs(0)); // 当前时刻
axisX->setGridLineVisible(true); // 网格线可见
axisX->setFormat("mm:ss"); // X坐标轴格式为 分:秒
axisY->setMin(0);
axisY->setMax(50);
axisY->setTickCount(6); // Y轴有6个标签
axisX->setTitleText("Time"); // X轴名称
axisY->setTitleText("Count"); // Y轴名称
axisY->setLabelFormat("%d"); // Y轴显示整数
m_Chart->addAxis(axisX, Qt::AlignBottom); // X轴位于底部
m_Chart->addAxis(axisY, Qt::AlignLeft); // Y轴位于左侧
m_Chart->addSeries(m_ASeries); // 添加A曲线
m_Chart->addSeries(m_BSeries); // 添加B曲线
// 绑定曲线和坐标轴
m_ASeries->attachAxis(axisX);
m_ASeries->attachAxis(axisY);
m_BSeries->attachAxis(axisX);
m_BSeries->attachAxis(axisY);
// 设置使用OpenGL加速
m_ASeries->setUseOpenGL(true);
m_BSeries->setUseOpenGL(true);
m_ChartView->setChart(m_Chart); // 绑定Chart到ChartView
m_ChartView->setRenderHint(QPainter::Antialiasing); // 设置消除锯齿,曲线平滑
m_ChartView->resize(360, 240); // 设置视图大小
// 设置坐标轴标签的字体
QFont labelFont("Cambria", 10);
labelFont.setBold(true);
m_Chart->axisX()->setLabelsFont(labelFont);
m_Chart->axisY()->setLabelsFont(labelFont);
m_Chart->axisX()->setLabelsColor(QColor(255, 255, 255));
m_Chart->axisY()->setLabelsColor(QColor(255, 255, 255));
m_Chart->setBackgroundBrush(QBrush(QColor(64, 64, 64))); // 设置统计图背景
m_ASeries->setPen(QPen(QColor(60, 187, 251), 3)); // 设置A曲线的颜色和粗细
m_BSeries->setPen(QPen(QColor(153, 232, 83), 3)); // 设置B曲线的颜色和粗细
}

本文介绍了在QT开发中利用QChart控件创建统计图的过程,并重点讲解如何设置自定义样式,包括坐标轴和曲线的个性化配置,提供了一步步的实现步骤。
7350

被折叠的 条评论
为什么被折叠?



