久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    Qt QChart,利用QChart繪制動態曲線

     昵稱806630 2018-12-22

    這是一個簡單的demo,在更新數據的時候我采用了官方中audio這個example的方式。


    效果圖



    程序

    -------------------------------------------------------------------------------------

    運行環境 :

    Qt Creator 4.2.1

    Based on Qt 5.8.0 (MSVC 2015, 32 bit)


    --------------------------------------------------------------------------------------

    QtChartsTest.pro

    這個文件中唯一需要添加的是

    QT += charts

    其他可以不看

    1. #-------------------------------------------------
    2. #
    3. # Project created by QtCreator 2017-07-11T10:12:57
    4. #
    5. #-------------------------------------------------
    6. QT += core gui
    7. greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    8. TARGET = QtChartsTest
    9. TEMPLATE = app
    10. # The following define makes your compiler emit warnings if you use
    11. # any feature of Qt which as been marked as deprecated (the exact warnings
    12. # depend on your compiler). Please consult the documentation of the
    13. # deprecated API in order to know how to port your code away from it.
    14. DEFINES += QT_DEPRECATED_WARNINGS
    15. # You can also make your code fail to compile if you use deprecated APIs.
    16. # In order to do so, uncomment the following line.
    17. # You can also select to disable deprecated APIs only up to a certain version of Qt.
    18. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
    19. SOURCES += main.cpp\
    20. mainwindow.cpp
    21. HEADERS += mainwindow.h
    22. FORMS += mainwindow.ui
    23. QT += charts


    mainwindow.h

    這個文件聲明了一個定時器的槽和一個獲得數據的方法

    1. #ifndef MAINWINDOW_H
    2. #define MAINWINDOW_H
    3. #include <QMainWindow>
    4. namespace Ui {
    5. class MainWindow;
    6. }
    7. class MainWindow : public QMainWindow
    8. {
    9. Q_OBJECT
    10. public:
    11. explicit MainWindow(QWidget *parent = 0);
    12. ~MainWindow();
    13. protected:
    14. void timerEvent(QTimerEvent *event) Q_DECL_OVERRIDE;
    15. private:
    16. Ui::MainWindow *ui;
    17. double getData(double time);
    18. };
    19. #endif // MAINWINDOW_H

    mainwindow.cpp

    主程序中配置好Qchart,QLineSeries是用來存放數據。更新的工作放在定時器的槽中。其中

    m_series->setUseOpenGL(true);//openGl 加速

    采用openGL加速,繪圖速度加快

    1. #include "mainwindow.h"
    2. #include "ui_mainwindow.h"
    3. #include "QtCharts/QChart"
    4. #include "QLineSeries"
    5. #include "QValueAxis"
    6. #include "QTimer"
    7. #include "QTime"
    8. #include "QList"
    9. #include "qmath.h"
    10. #include "QPointF"
    11. #include "QDebug"
    12. //#include <QtCharts/QChartGlobal>
    13. #include "QChartView"
    14. QT_CHARTS_USE_NAMESPACE
    15. QChart *m_chart;
    16. QLineSeries *m_series;
    17. //QList<double> dataList;//存儲業務數據
    18. int maxSize = 5000;
    19. //QTimer updateTimer;
    20. int timeId;
    21. MainWindow::MainWindow(QWidget *parent) :
    22. QMainWindow(parent),//默認初始化?
    23. ui(new Ui::MainWindow)
    24. {
    25. ui->setupUi(this);
    26. m_chart = new QChart;
    27. QChartView *chartView = new QChartView(m_chart);
    28. // v.setRubberBand(QChartView::HorizontalRubberBand);
    29. chartView->setRubberBand(QChartView::RectangleRubberBand);
    30. // chartView->setRubberBand();
    31. m_series = new QLineSeries;
    32. m_chart->addSeries(m_series);
    33. for(int i=0;i<maxSize;++i){
    34. m_series->append(i,0);
    35. }
    36. m_series->setUseOpenGL(true);//openGl 加速
    37. qDebug()<<m_series->useOpenGL();
    38. QValueAxis *axisX = new QValueAxis;
    39. axisX->setRange(0,maxSize);
    40. axisX->setLabelFormat("%g");
    41. axisX->setTitleText("axisX");
    42. QValueAxis *axisY = new QValueAxis;
    43. axisY->setRange(-1.5,1.5);
    44. axisY->setTitleText("axisY");
    45. m_chart->setAxisX(axisX,m_series);
    46. m_chart->setAxisY(axisY,m_series);
    47. m_chart->legend()->hide();
    48. m_chart->setTitle("demo");
    49. QVBoxLayout *layout = ui->verticalLayout;
    50. layout->addWidget(chartView);
    51. timeId = startTimer(30);
    52. }
    53. double MainWindow::getData(double time){
    54. double s = qCos( time * M_PI * 2 ) ;
    55. return s;
    56. }
    57. void MainWindow::timerEvent(QTimerEvent *event){
    58. if(event->timerId()==timeId){//定時器到時間,//模擬數據填充
    59. static QTime dataTime(QTime::currentTime());
    60. long int eltime = dataTime.elapsed();
    61. static int lastpointtime = 0;
    62. int size = (eltime - lastpointtime);//數據個數
    63. qDebug()<<"size-->"<<size;
    64. if(isVisible()){
    65. QVector<QPointF> oldPoints = m_series->pointsVector();//Returns the points in the series as a vector
    66. QVector<QPointF> points;
    67. for(int i=size;i<oldPoints.count();++i){
    68. points.append(QPointF(i-size ,oldPoints.at(i).y()));//替換數據用
    69. }
    70. qint64 sizePoints = points.count();
    71. for(int k=0;k<size;++k){
    72. points.append(QPointF(k+sizePoints,getData((((double)lastpointtime+k+1)/1000))));
    73. }
    74. m_series->replace(points);
    75. lastpointtime = eltime;
    76. }
    77. }
    78. }
    79. MainWindow::~MainWindow()
    80. {
    81. delete ui;
    82. }


    main.cpp

    沒什么好說的

    1. #include "mainwindow.h"
    2. #include <QApplication>
    3. int main(int argc, char *argv[])
    4. {
    5. QApplication a(argc, argv);
    6. MainWindow w;
    7. w.show();
    8. return a.exec();
    9. }


    mainwindow.ui

    這個里自己放一個vertical Layout


    這只是我根據別人的程序寫的簡單demo,有問題歡迎討論。

    demo文件:

    鏈接:http://pan.baidu.com/s/1cKXtIQ 密碼:5sm2

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 日本久久99成人网站| 二区三区亚洲精品国产| 国产午夜亚洲精品国产成人 | 成人免费乱码大片a毛片| 国产睡熟迷奷系列网站| 精品国产一区AV天美传媒| 3D动漫精品啪啪一区二区免费| 精品中文人妻中文字幕| 亚洲色欲色欲WWW成人网| 国产亚洲一二三区精品| 中文字幕无码免费久久| 日韩精品中文字幕人妻| 野花免费社区在线| 日夜啪啪一区二区三区| 免费观看的AV毛片的网站| 日韩免费视频一一二区| 成午夜精品一区二区三区| 久久亚洲2019中文字幕| 2019亚洲午夜无码天堂| 免费无码AV一区二区波多野结衣| 亚洲国产精品无码AAA片| 69天堂人成无码免费视频| 久久丫精品国产亚洲AV不卡| 人妻系列无码专区69影院| 人妻 日韩 欧美 综合 制服| 亚洲性线免费观看视频成熟| 亚洲精品麻豆一区二区| 99久久无色码中文字幕| 中文字幕人妻在线精品| 在线亚洲人成电影网站色WWW| 国产毛1卡2卡3卡4卡免费观看| 人成午夜免费大片| 国产成人久久精品一区二区三区| 精品视频在线观看免费观看| 免费观看的AV毛片的网站| 免费无码又爽又刺激网站| 久久月本道色综合久久| 国产中文字幕在线精品| 国产成人亚洲精品| 国产JJZZJJZZ视频全部免费| 亚洲色一色噜一噜噜噜|