学习目标:QChart 曲线图表操作
学习内容
QT中的QChart类提供了一个功能强大的图表绘制框架,可以根据需求方便高效地绘制各种类型的图表,主要特点如下:
-
支持多种常见图表类型,如线图、条形图、饼图、散点图等各种类型。开发者只需要选择合适的图表类和数据即可绘制不同图表。
-
采用了MVC架构模式,QChart作为模型,使用QChartView作为视图进行图表渲染输出。开发者可以方便地在界面上添加和管理多个图表。
-
提供了丰富的图表元素类,支持设置图表标题、坐标轴、图例、数据标签等元素。可以灵活控制图表各区域元素。
-
支持多种动画效果,包括图表区域和数据点的淡入淡出效果,可自定义动画参数实现丰富的交互效果。
-
内置了常见的坐标轴类型,同时支持自定义坐标轴格式。开发者不需要关心坐标数值的转换计算工作。
-
使用起来接口清晰简洁,支持C++和QML两种开发模式,重用性很强。
-
性能也很好,绘制成千上万个数据点依然流畅快速。常用于数据量大的实时图表等场景。
总之,QChart提供了一套专业的图表绘制解决方案。对初学图表开发的同学来说,使用起来门槛较低,是一套不错的选择。对一些复杂图表也有很好的扩展能力支持。
使用之前需要在qmake.pro中加入
qmake.por文件加入
QT += core gui
QT +=charts
实现项目
基于代码实现QChart 曲线程序
cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtCharts>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//创建视图对象
QChartView *chartview =new QChartView(this);
setCentralWidget(chartview);
//创建图表
QChart* chart =new QChart();
chart->setTitle("图标测试-sincos");
chartview->setChart(chart);
//创建曲线
QLineSeries* s1=new QLineSeries;
QLineSeries* s2=new QLineSeries;
s1->setName("Sin");
s2->setName("Cos");
chart->addSeries(s1);
chart->addSeries(s2);
//赋值
qreal t=0,y1,y2,iv=0.1;
for (int i=0;i<100;i++) {
y1=qSin(t);
s1->append(t,y1);
y2=qCos(t);
s2->append(t,y2);
t=t+iv;
}
//创建坐标轴
QValueAxis* ax=new QValueAxis;
ax->setRange(0,10);
ax->setTitleText("times(secs)");
QValueAxis* ay=new QValueAxis;
ay->setRange(-2,2);
ay->setTitleText("values");
chart->setAxisX(ax,s1);
chart->setAxisY(ay,s1);
chart->setAxisX(ax,s2);
chart->setAxisY(ay,s2);
}
MainWindow::~MainWindow()
{
delete ui;
}
基于gui界面制作QChart 曲线程序
qmake.por文件加入
QT += core gui
QT +=charts
选择GRaphicsView,右击选择提升
核心代码
cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QSplineSeries *s1=new QSplineSeries(); // 创建曲线对象
s1->append(0,5);
s1->append(1,3);
s1->append(2,5);
s1->append(3,9);
s1->append(4,6);
s1->append(5,16);
s1->append(6,10);
s1->append(7,12);
s1->append(8,17);
s1->append(9,19);
QChart *ct=ui->chartview->chart();
ct->legend()->hide(); // 隐藏图表比例
ct->addSeries(s1);
ct->setTitle("曲线图表标题--自定义");
ct->createDefaultAxes();
ct->axes(Qt::Vertical).first()->setRange(0,20); // 设置y轴的范围
}
Widget::~Widget()
{
delete ui;
}
总结
总的来说, QChart 是 Qt Charts 模块中非常强大和灵活的图表组件,可以帮助开发者快速创建各种类型的图表,并提供丰富的定制选项。
最后附上源代码链接
对您有帮助的话,帮忙点个star