如何用Qt QChart轻松创建图表?

摘要:Qt QChart 创建图表 @ 效果 流程 graph LR q(value 数据) q-->s1(QPieSlice)-->ps(QPieSeries)--饼状图-->c
Qt QChart 创建图表 @ 目录Qt QChart 创建图表效果流程代码1. 饼图2. 柱图3. 折/曲线图4. 区域图 效果 流程 graph LR q(value 数据) q-->s1(QPieSlice)-->ps(QPieSeries)--饼状图-->c(QChart)-->v(QChartView)-->w(QWidget) q-->s2(...)-->ps q-->bs(QBarSet)-->b(QBarSeries)--柱状图-->c q-->bs1(...)-->b q-->p(QPointF)-->l(QLineSeries/QSplineSeries)--折/曲线图-->c q-->p1(...)-->l l1(QLineSeries upper)-->a(QAreaSeries)--区域图-->c l2(QLineSeries lower)-->a 代码 1. 饼图 // 保存多个扇形 QList<QPieSlice *> slices; for (int i = 1; i <= 10; ++i) { // 创建一个扇形 QPieSlice * slice = new QPieSlice(QString::number(i),i); slices << slice; } // 创建一个饼图系列 QPieSeries * pieSeries = new QPieSeries; // 当鼠标悬浮时设置标签可见,设置饼图扇形分离 QObject::connect(pieSeries,&QPieSeries::hovered , [](QPieSlice *slice, bool state) { slice->setLabelVisible(state); slice->setExploded(state); }); // 将所有扇形所加到饼图中 pieSeries->append(slices); // 创建一个图表 QChart * chart = new QChart; // 设置标题 chart->setTitle(QStringLiteral("饼图")); // 设置动画 chart->setAnimationOptions(QChart::AllAnimations); // 设置图表的系列 chart->addSeries(pieSeries); // 创建图表视图,显示图表 pView = new QChartView(chart); // 设置抗锯齿 pView->setRenderHint(QPainter::Antialiasing); // 添加图表视图到布局 QVBoxLayout *layout = new QVBoxLayout(this); layout->addWidget(pView); 2. 柱图 // 保存柱集合 QList<QBarSet *> sets; for (int i = 1; i <= 5; ++i) { // 创建一个柱集合 QBarSet * set = new QBarSet(QString("set").append(QString::number(i))); QList<qreal> values; for (int j = 1; j <= 5; ++j) { values << qrand()%100; qDebug() << values; } set->append(values); sets << set; } // 创建一个柱图系列 QBarSeries * barSeries = new QBarSeries; // 添加柱集合 barSeries->append(sets); QChart * chart = new QChart; chart->setTitle(QStringLiteral("柱状图")); chart->setAnimationOptions(QChart::AllAnimations); chart->addSeries(barSeries); pView = new QChartView(chart);
阅读全文