91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Qt?QChart怎么實現折線圖的繪制

發布時間:2023-04-26 11:28:50 來源:億速云 閱讀:105 作者:iii 欄目:開發技術

這篇文章主要講解了“Qt QChart怎么實現折線圖的繪制”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Qt QChart怎么實現折線圖的繪制”吧!

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.效果如下

Qt?QChart怎么實現折線圖的繪制

3.具體實現如下

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
 
#include <QtCharts>
#include <QChartView>
#include <QSplineSeries>
 
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<QPointF> list;
    int count = cloud.points.size();
    std::cout << "new point s count : " << count << "  " << std::endl;
 
 
    for (int i = 0; i < count; i+=10)
    {
        list << QPointF(cloud.points[i].z, cloud.points[i].y);
    }
    lineSeries->replace(list);

5.PCL 點排序

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

感謝各位的閱讀,以上就是“Qt QChart怎么實現折線圖的繪制”的內容了,經過本文的學習后,相信大家對Qt QChart怎么實現折線圖的繪制這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

喀什市| 依兰县| 女性| 横山县| 鄯善县| 安塞县| 台东市| 稻城县| 嵊泗县| 和平区| 株洲市| 汝南县| 盘锦市| 平江县| 河北区| 连州市| 辛集市| 三门峡市| 读书| 庄河市| 仙居县| 绍兴市| 利川市| 成都市| 阿克苏市| 天气| 印江| 山东| 广西| 榆中县| 涿鹿县| 鞍山市| 昌平区| 定日县| 南岸区| 兰考县| 阿城市| 秀山| 宁远县| 普兰店市| 米泉市|