最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt圖形圖像開發(fā)之高性能曲線圖模塊QCustomplot庫(kù)詳細(xì)使用方法與實(shí)例(支持動(dòng)、靜曲線圖)

 更新時(shí)間:2020年03月10日 16:13:28   作者:wildPointer_  
這篇文章主要介紹了Qt圖形圖像開發(fā)之高性能曲線圖模塊QCustomplot庫(kù)詳細(xì)使用方法與實(shí)例(支持動(dòng)、靜曲線圖),需要的朋友可以參考下

Qt曲線圖模塊QCustomPlot庫(kù)介紹

QCustomPlot是一個(gè)小型的Qt畫圖標(biāo)類,支持繪制靜態(tài)曲線、動(dòng)態(tài)曲線、多重坐標(biāo)曲線,柱狀圖,蠟燭圖等

前段時(shí)間用QChart模塊畫圖,一條曲線上面放8000條數(shù)據(jù)就會(huì)卡的不行必須要換個(gè)其他的控件,后來(lái)找到了曲線圖模塊QCustomplot庫(kù)

這個(gè)庫(kù)性能非常好,畫曲線圖折線圖柱狀圖動(dòng)態(tài)靜態(tài),放大縮小,都很好用,10w條數(shù)據(jù)量無(wú)壓力秒畫出來(lái)一點(diǎn)也不卡

下載地址

https://www.qcustomplot.com/index.php/download

里面分為

QCustomPlot 2和QCustomPlot 1我用的2這兩個(gè)有一些函數(shù)的差異

下載解壓以后我們只需要qcustomplot.h和qcustomplot.cpp

注意

pro 文件里面 寫入 QT+= printsupport

動(dòng)態(tài)效果

QCustomplot靜態(tài)曲線圖生成

//他繼承QWidget 所以構(gòu)造里面 放控件就會(huì)畫到控件上
QCustomPlot *pCustomPlot = new QCustomPlot(ui->label);
//添加一條曲線
QCPGraph* pgraph = pCustomPlot->addGraph();
//給曲線準(zhǔn)備數(shù)據(jù) 設(shè)置數(shù)據(jù) 
  QVector<double> x(80000);
  QVector<double> y(80000);
  for(int i = 0; i<x.size();i++)
  {
    x[i] = i;
    if(i%2==0)
      y[i] = 10;
    else
      y[i] = 20;
  }
	
	//設(shè)置數(shù)據(jù)
  pCustomPlot->graph(0)->setData(x,y);
	//設(shè)置Y軸范圍
  pCustomPlot->yAxis->setRange(0,30);
	//x軸名字
  pCustomPlot->xAxis->setLabel("X");
  //Y軸名字
  pCustomPlot->yAxis->setLabel("Y");
	//設(shè)置大小
  pCustomPlot->resize(ui->label->width(),ui->label->height());
	//可以進(jìn)行鼠標(biāo)位置 放大縮小 拖拽 放大縮小坐標(biāo)系?。?!功能非常強(qiáng)大
  pCustomPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);
	//重繪 每次改變完以后都要調(diào)用這個(gè)進(jìn)行重新繪制
  pCustomPlot->replot();

運(yùn)行效果如下:

時(shí)間為坐標(biāo)軸的靜曲線圖

大致差不多 區(qū)別在于x軸改為時(shí)間

  QCustomPlot* p2 = new QCustomPlot(ui->label_2);
  QVector<double> time;
  QVector<double> y;
	//模擬幾個(gè)時(shí)間 .toTime_t()是轉(zhuǎn)換為 時(shí)間戳 從1970年到現(xiàn)在的秒數(shù)
  time<<QDateTime::fromString("2019-01-15 17:08:23","yyyy-MM-dd hh:mm:ss").toTime_t();
  time<<QDateTime::fromString("2019-01-25 17:08:23","yyyy-MM-dd hh:mm:ss").toTime_t();
  time<<QDateTime::fromString("2019-02-15 17:08:23","yyyy-MM-dd hh:mm:ss").toTime_t();
  time<<QDateTime::fromString("2019-02-25 17:08:23","yyyy-MM-dd hh:mm:ss").toTime_t();
  time<<QDateTime::fromString("2019-03-27 13:08:23","yyyy-MM-dd hh:mm:ss").toTime_t();
  y<<5<<15<<5<<15<<5;
	
	//增加一條線
  p2->addGraph();
  //設(shè)置Y軸范圍
  p2->yAxis->setRange(0,20);
  
	//QCPAxisTickerDateTime 時(shí)間坐標(biāo)軸 必須要用 智能指針 
  QSharedPointer<QCPAxisTickerDateTime> timer(new QCPAxisTickerDateTime);
	//設(shè)置時(shí)間格式
  timer->setDateTimeFormat("yyyy-MM-dd");
  //設(shè)置時(shí)間軸 一共幾格
  //timer->setTickCount(6);
  //設(shè)置label 旋轉(zhuǎn)30° 橫著顯示可能顯示不全 
  p2->xAxis->setTickLabelRotation(30);
  // timer->setTickStepStrategy(QCPAxisTicker::tssMeetTickCount);
	//設(shè)置坐標(biāo)軸
  p2->xAxis->setTicker(timer);
  p2->xAxis->setRange(time.at(0),time.at(4));
  p2->graph(0)->setData(time,y);
  p2->resize(ui->label_2->width(),ui->label_2->height());
   p2->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);

運(yùn)行效果如下:

QCustomplot動(dòng)態(tài)曲線圖生成

下圖動(dòng)態(tài)曲線是我用傳感器采集的,大家可以用一些隨機(jī)數(shù)據(jù)來(lái)測(cè)試

假設(shè)圖像只顯示10個(gè)點(diǎn) 第11個(gè)點(diǎn)將會(huì)把第一個(gè)點(diǎn)擠出去 就是一個(gè)vector 出棧入棧 里面一直保持10個(gè)數(shù)據(jù)

		//QVector<double> sx_vec,xAxis_vec 存放數(shù)據(jù)的容器
 	
		//m_chartPoint_counter 計(jì)數(shù)器 一直增加 來(lái)一條數(shù)據(jù)增加一下 控制x軸前進(jìn) 實(shí)現(xiàn)動(dòng)態(tài)效果
	
		//這時(shí)容器里面還沒10個(gè)點(diǎn) 所有一直向里面存
    if(m_chartPoint_counter < 10)
    {
    	
      sx_vec.append(sx_);
      xAxis_vec.append(m_chartPoint_counter);
	
			//設(shè)置范圍正好 能顯示當(dāng)前點(diǎn)				
      sx_plot->xAxis->setRange(0,xAxis_vec.at(xAxis_vec.size()-1));
     
    }
    else
    {
    	//容器數(shù)據(jù)現(xiàn)在是正好10個(gè) 把第一個(gè)出棧 把第11個(gè)入棧 正好還是10個(gè)數(shù)據(jù)
      sx_vec.removeFirst();
      xAxis_vec.removeFirst();
			
			//入棧
      xAxis_vec.append(m_chartPoint_counter);
      sx_vec.append(sx_);
			//設(shè)置范圍正好 能顯示當(dāng)前點(diǎn)		
      sx_plot->xAxis->setRange(xAxis_vec.at(0),xAxis_vec.at(
                     xAxis_vec.size()-1));
    }
		//設(shè)置Y軸坐標(biāo)系 自動(dòng)縮放以正常顯示所有的數(shù)據(jù)
    sx_plot->yAxis->rescale(true);
  	//設(shè)置數(shù)據(jù)
    sx_plot->graph()->setData(xAxis_vec,sx_vec);
		//重繪制
    sx_plot->replot();
	//這里必須要一直增加 如果增加到10就不增加 效果就是第10個(gè)點(diǎn)一直變化 不會(huì)出現(xiàn)動(dòng)態(tài)效果
	m_chartPoint_counter++;

圖像數(shù)據(jù)清空

//圖像數(shù)據(jù)清空
QCPGraph* thresholdY_line;
thresholdY_line->data().data()->clear();

這里只是介紹一些基本的功能 ,一些強(qiáng)大的功能 在 下載的examples里有

本文主要講解了Qt圖形圖像開發(fā)之高性能曲線圖模塊QCustomplot庫(kù)詳細(xì)使用方法與實(shí)例,更多關(guān)于QT開發(fā)的知識(shí)請(qǐng)查看下面的相關(guān)鏈接

相關(guān)文章

  • zlib庫(kù)壓縮和解壓字符串STL string的實(shí)例詳解

    zlib庫(kù)壓縮和解壓字符串STL string的實(shí)例詳解

    這篇文章主要介紹了zlib庫(kù)壓縮和解壓字符串STL string的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下
    2017-10-10
  • 詳解C語(yǔ)言中for循環(huán)與while循環(huán)的用法

    詳解C語(yǔ)言中for循環(huán)與while循環(huán)的用法

    這篇文章主要通過(guò)幾個(gè)示例為大家介紹一下C語(yǔ)言中for循環(huán)與while循環(huán)的用法以及二者的區(qū)別,文中的代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C語(yǔ)言有一定幫助,需要的可以參考一下
    2022-07-07
  • C語(yǔ)言逆向分析語(yǔ)法超詳細(xì)分析

    C語(yǔ)言逆向分析語(yǔ)法超詳細(xì)分析

    這篇文章主要介紹了C語(yǔ)言逆向分析語(yǔ)法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-11-11
  • c++中的指針最全總結(jié)

    c++中的指針最全總結(jié)

    指針是整個(gè)C++的精髓所在,只有精通了指針才可以說(shuō)是掌握了C++,可以說(shuō)學(xué)習(xí)C++的過(guò)程是個(gè)熟練掌握和使用指針的過(guò)程,下面這篇文章主要給大家介紹了關(guān)于c++中指針的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • C++有符號(hào)和無(wú)符號(hào)之間的轉(zhuǎn)換問題

    C++有符號(hào)和無(wú)符號(hào)之間的轉(zhuǎn)換問題

    在開發(fā)中經(jīng)常會(huì)遇到有符號(hào)和無(wú)符號(hào)之間的轉(zhuǎn)換問題,如果不清楚問題根源,很難解決bug,今天小編通過(guò)本文給大家分享c++有符號(hào)無(wú)符號(hào)轉(zhuǎn)換問題,需要的朋友參考下
    2021-07-07
  • Visual Studio中scanf函數(shù)報(bào)錯(cuò)的幾種解決方法

    Visual Studio中scanf函數(shù)報(bào)錯(cuò)的幾種解決方法

    本文主要介紹了Visual Studio中scanf函數(shù)報(bào)錯(cuò)的幾種解決方法,文中通過(guò)圖文示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • C++中的按位與&、按位與或|、按位異或^運(yùn)算符詳解

    C++中的按位與&、按位與或|、按位異或^運(yùn)算符詳解

    這篇文章主要介紹了C++中的按位與&、按位與或|、按位異或^運(yùn)算符,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-01-01
  • c語(yǔ)言中實(shí)現(xiàn)數(shù)組幾個(gè)數(shù)求次大值

    c語(yǔ)言中實(shí)現(xiàn)數(shù)組幾個(gè)數(shù)求次大值

    這篇文章主要介紹了c語(yǔ)言中實(shí)現(xiàn)數(shù)組幾個(gè)數(shù)求次大值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Linux中利用c語(yǔ)言刪除某個(gè)目錄下的文件

    Linux中利用c語(yǔ)言刪除某個(gè)目錄下的文件

    這篇文章主要給大家介紹了Linux中利用c語(yǔ)言刪除某個(gè)目錄下文件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • C++ std::any的模擬實(shí)現(xiàn)

    C++ std::any的模擬實(shí)現(xiàn)

    std::any是C++標(biāo)準(zhǔn)庫(kù)中的一個(gè)類,std::any對(duì)象可以存儲(chǔ)除單例等特殊情況外的任何類型的數(shù)據(jù),本文主要介紹了C++ std::any的模擬實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02

最新評(píng)論

武平县| 镇平县| 新平| 西平县| 澄江县| 万荣县| 宁波市| 进贤县| 安新县| 水城县| 上蔡县| 天津市| 治县。| 望都县| 衡阳县| 云林县| 尤溪县| 芒康县| 鹿泉市| 东至县| 昭觉县| 西乡县| 翁牛特旗| 德兴市| 榕江县| 柏乡县| 安吉县| 濮阳县| 平乐县| 色达县| 柯坪县| 永宁县| 深州市| 淳化县| 重庆市| 西和县| 沙湾县| 东兴市| 宝应县| 育儿| 兴义市|