Qt QChart实现折线图的绘制

QChart是常用的图表,这篇文章主要为大家详细介绍了Qt如何利用QChart实现折线图的绘制,文中的示例代码讲解详细,感兴趣的可以了解一下

前言

QChart  是常用的图表;我这里做了一个 default 和 custom

1.使用

Qt5.9及以上版本;

pro文件中添加QT += charts

.在使用QChart的各个控件之前,必须先声明一个命名空间。如:

QT_CHARTS_USE_NAMESPACE
QT_BEGIN_NAMESPACE

QChart和QChartView的关系:

QChart和QChartView的关系类似于QGraphicsScene和QGraphicsView的关系,QChart本身是用来存放需要展示的控件的类,而QChartView则是用于人眼识别观察的入口。

所有的更改都是在QChart上发生的,不过更改的结果是通过QChartView来进行展示的

2.效果如下

3.具体实现如下

mainwindow.h

#ifndef MAINWINDOW_H #define MAINWINDOW_H #include  #include  #include  #include  QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void on_pushButton_clicked(); void on_pushButton_2_clicked(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H 

mainwindow.cpp

#include "mainwindow.h" #include "ui_mainwindow.h" #pragma execution_character_set("utf-8") MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_clicked() { QLineSeries *lineSeries = new QLineSeries();        //创建折线系列 QChartView *chartView = new QChartView(this); /*为系列里添加100个数据*/ for(quint8 i=0; i<100; i++) { lineSeries->append(i,qrand()%300); } lineSeries->setName("red line");                  //设置系列名称 QChart * mChart = new QChart();                          //创建图标对象 mChart->addSeries(lineSeries);                  //向图表中添加系列 mChart->createDefaultAxes();                       //创建默认的坐标,必须在addSeries之后调用 mChart->setTheme(QChart::ChartThemeDark);           //设置图标主题 mChart->setTitle("qrand");                       //设置图标名称 // mChart->legend()->hide();                          //隐藏图例,也就是不显示系列名称了 chartView->setChart(mChart);                    //向chartView中添加图标 chartView->resize(QSize(500,300));              //重新设置chartView的大小 chartView->setRenderHints(QPainter::Antialiasing);//消除边缘,看起来平滑一些 ui->horizontalLayout->addWidget(chartView);     //把chartView放到水平布局中(在ui中拖一个水平布局) } void MainWindow::on_pushButton_2_clicked() { QLineSeries *lineSeries = new QLineSeries();        //创建折线系列 QChartView *chartView = new QChartView(this); for(quint8 i=0; i<100; i++) { lineSeries->append(i,qrand()%300); } lineSeries->setName("red line"); QChart * mChart = new QChart(); mChart->addSeries(lineSeries); //mChart->createDefaultAxes(); QValueAxis *axisX = new QValueAxis; axisX->setRange(0, 300); //设置坐标轴范围 axisX->setTickCount(5); //主分隔个数 axisX->setMinorTickCount(2);//4 mChart->addAxis(axisX,Qt::AlignLeft ); //坐标轴添加到图表,并指定方向 lineSeries->attachAxis(axisX); //序列 series0 附加坐标轴 QValueAxis *axisY = new QValueAxis; axisY->setRange( 0,  100); axisY->setTickCount(10); axisY->setMinorTickCount(2);//4 mChart->addAxis(axisY,Qt::AlignBottom); lineSeries->attachAxis(axisY); mChart->setTheme(QChart::ChartThemeDark); lineSeries->setColor(Qt::red); mChart->setTitle("qrand"); chartView->setChart(mChart); chartView->resize(QSize(500,300)); chartView->setRenderHints(QPainter::Antialiasing); ui->horizontalLayout->addWidget(chartView); }

4.刷新QChart

//更新系列中的数据  注意:不需要将该系列从图表中移除 lineSeries->clear(); QList list; int count = cloud.points.size(); std::cout << "new point s count : " << count << "  " << std::endl; for (int i = 0; i replace(list); 

5.PCL 点排序

    //------------------------------排序---------------------------- std::sort(cloud.begin(), cloud.end(), [](pcl::PointXYZ a, pcl::PointXYZ b) {return a.z 

到此这篇关于Qt QChart实现折线图的绘制的文章就介绍到这了,更多相关Qt QChart折线图内容请搜索0133技术站以前的文章或继续浏览下面的相关文章希望大家以后多多支持0133技术站!

以上就是Qt QChart实现折线图的绘制的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » C语言