折线图QLineSeries、曲线图QSplineSeries、散点图QScatterSeries、柱状图 QBarSeries、堆叠柱状图QStackedBarSeries、饼图QPieSeries等用法都有相似之处,简单使用包括以下基本步骤:
步骤1
构建Series,包括设置名称,添加基本元素等(如折线图/曲线图/散点图添加点,饼图添加切片)。
步骤2
构建Chart,根据实际Series类型设置相关的属性,包括设置标题、设置动画、设置主题、添加Series,折线图/曲线图/散点图创建坐标轴、设置坐标轴范围,饼图可设置饼的大小、切片分离度等。
步骤3
构建ChartView,设置抗锯齿。
步骤4
显示。
示例代码(基于Qt官方例子Simple line chart example稍作修改)
#include <QApplication>
#include <QMainWindow>
#include <QChartView>
#include <QSplineSeries>
#include <math.h>
#define pie 3.1415926
QT_CHARTS_USE_NAMESPACE
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//![1]
QSplineSeries *series = new QSplineSeries();
series->setName("sin line");
for(double i = 0; i<360; i++)
{
QPointF point(i,sin(i/360*pie*2));
series->append(point);
}
QSplineSeries *series1 = new QSplineSeries();
series1->setName("cos line");
for(double i = 0; i<360; i++)
{
QPointF point(i,cos(i/360*pie*2));
series1->append(point);
}
//![1]
//![2]
QChart *chart = new QChart();
chart->setTitle("Simple line chart example");
chart->setAnimationOptions(QChart::SeriesAnimations); //动画选项
chart->setTheme(QChart::ChartThemeBlueCerulean); //设置主题,Qt内置
chart->addSeries(series);
chart->addSeries(series1);
chart->createDefaultAxes(); //先append序列再创建坐标轴
chart->axes(Qt::Horizontal).first()->setRange(0,360); //横坐标范围
chart->axes(Qt::Vertical).first()->setRange(-2,2); //纵坐标范围
//![2]
//![3]
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing); //抗锯齿
//![3]
//![4]
QMainWindow window;
window.setCentralWidget(chartView);
window.resize(400, 300);
window.show();
//![4]
return a.exec();
}