在以前文章中介绍了QtCharts的简单使用:https://blog.csdn.net/qq_42449351/article/details/99954436,今天我们就来用Charts绘制折线图、饼图、极地图。
同样要先在.pro文件中添加charts库, QT += charts; 在界面中添加Graphics View组件, 作为Chart的载体, 将该组件提升为QtCharts::QChartView。如有不明白,可以跳转至上面的Qtcharts的简单使用
效果图
通过三个按钮的点击事件,触发相应的绘图。
折线图代码:
//折线图
void MainWindow::LineChart()
{
QLineSeries *series = new QLineSeries();
series->append(0, 6);
series->append(2, 4);
series->append(3, 8);
series->append(7, 4);
series->append(10, 5);
QChart *chart = new QChart();
chart->legend()->hide();
chart->addSeries(series);
chart->createDefaultAxes();
chart->setTitle("折线图");
ui->graphicsView->setChart(chart);
ui->graphicsView->setRenderHint(QPainter::Antialiasing); //抗锯齿处理
}
饼图代码:
//饼图
void MainWindow::PieChart()
{
QPieSeries *series = new QPieSeries();
series->append("正常", 0.8)->setColor(QColor(0,200,200));
series->append("超标", 0.2)->setColor(QColor(200,150,0));
series->setLabelsVisible();
QChart *chart = new QChart();
chart->legend()->hide(); //是否显示图例
chart->addSeries(series);
chart->setAnimationOptions(QChart::AllAnimations);
chart->createDefaultAxes();
chart->setTitle("饼图");
ui->graphicsView->setChart(chart);
ui->graphicsView->setRenderHint(QPainter::Antialiasing); //抗锯齿处理
}
极地图代码:
//极地图
void MainWindow::PolarChart()
{
//曲线
QLineSeries *seriesWD = new QLineSeries();
seriesWD->setName("WD");
//图
QPolarChart *chartWD = new QPolarChart();
chartWD->legend()->hide();
chartWD->addSeries(seriesWD);
chartWD->setTheme(QChart::ChartThemeBlueCerulean);
chartWD->setTitle("极地图");
//坐标轴
QValueAxis *angleAxis = new QValueAxis(); //角坐标
angleAxis->setTickCount(11);
angleAxis->setLabelFormat("%d");
angleAxis->setShadesVisible(true);
angleAxis->setShadesBrush(QBrush(QColor(249,249,255)));
chartWD->addAxis(angleAxis, QPolarChart::PolarOrientationAngular);
QValueAxis *radiaAxis = new QValueAxis();
radiaAxis->setTickCount(11);
radiaAxis->setLabelFormat("%d");
chartWD->addAxis(radiaAxis, QPolarChart::PolarOrientationRadial);
seriesWD->attachAxis(radiaAxis);
seriesWD->attachAxis(angleAxis);
//赋值
for(int i=0; i<=360; i+=10) {
seriesWD->append(i, i+10);
}
radiaAxis->setRange(0,200);
angleAxis->setRange(0,360);
ui->graphicsView->setChart(chartWD);
ui->graphicsView->setRenderHint(QPainter::Antialiasing); //抗锯齿处理
}
之后会继续更新利用QTChart绘制各种图形,三维图尽请期待!!源代码已上传!
源代码:https://download.csdn.net/download/qq_42449351/12611073