這篇文章主要介紹了qt中QCustomplot庫如何生成靜態(tài)、動態(tài)曲線,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比承德縣網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式承德縣網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋承德縣地區(qū)。費用合理售后完善,十年實體公司更值得信賴。
QCustomPlot是一個小型的Qt畫圖標類,支持繪制靜態(tài)曲線、動態(tài)曲線、多重坐標曲線,柱狀圖,蠟燭圖等。只需要在項目中加入頭文件qcustomplot.h和qcustomplot.cpp文件,然后使一個widget提升為QCustomPlot類,即可使用。
QCustomPlot官網(wǎng):
http://www.qcustomplot.com/
QCustomPlot下載地址:
http://www.qcustomplot.com/index.php/download
QCustomPlot源碼包中,有QCustomPlot幫助文件,將其添加進Qt幫助文件,如圖,點擊添加按鈕,在下載的QCustomPlot源碼包中找到qch為后綴的文件進行添加。
1.建立Qt工程,將下載的QCustomPlot源碼中的qcustomplot.h和qcustomplot.cpp文件復制到項目所在文件夾,如圖
2.QtCreater中,右鍵項目,添加現(xiàn)有文件,如圖,選擇qcustomplot.h和qcustomplot.cpp添加:
3.在UI界面拖入一個widget,如圖
4.UI界面右鍵widget,點擊提升為,選擇全局包含,如圖
這里強調(diào)一下:Qt提升控件時,通常提升的類名稱中,每個單詞的首字母必須大寫【與Qt控件命名規(guī)則保持一致,各種第三方控件都采用這種命名格式】,否則無法識別,如這里必須寫成QCustomPlot而不能寫成Qcustomplot或qcustomplot
另一種簡單方法是將被提升類的名稱直接復制過來粘貼。
5.選擇項目的.pro文件,添加printsupport,如圖,QCustomPlot包含了一些打印的東西,如果沒有這一步,程序會報錯
6.最后一步,編寫代碼:
頭文件:
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include "qcustomplot.h" namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); private: Ui::Widget *ui; }; #endif // WIDGET_H
cpp文件:
#include "widget.h" #include "ui_widget.h" #include <QVector> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); //設(shè)定背景為黑色 //ui->widget->setBackground(QBrush(Qt::black)); //設(shè)定右上角圖形標注可見 ui->widget->legend->setVisible(true); //設(shè)定右上角圖形標注的字體 ui->widget->legend->setFont(QFont("Helvetica", 9)); QVector<double> x(101),y(101); //圖形為y=x^3 for(int i=0;i<101;i++) { x[i] = i/5.0-10; y[i] = x[i]*x[i]*x[i];//qPow(x[i],3) } //添加圖形 ui->widget->addGraph(); //設(shè)置畫筆 ui->widget->graph(0)->setPen(QPen(Qt::blue)); //設(shè)置畫刷,曲線和X軸圍成面積的顏色 ui->widget->graph(0)->setBrush(QBrush(QColor(255,255,0))); //設(shè)置右上角圖形標注名稱 ui->widget->graph(0)->setName("曲線"); //傳入數(shù)據(jù),setData的兩個參數(shù)類型為double ui->widget->graph(0)->setData(x,y); QVector<double> temp(20); QVector<double> temp1(20); //圖形為y = 100*x; for(int i=0;i<20;i++) { temp[i] = i; temp1[i] = 10*i+10; } //添加圖形 ui->widget->addGraph(); //設(shè)置畫筆 ui->widget->graph(1)->setPen(QPen(Qt::red)); //設(shè)置畫刷,曲線和X軸圍成面積的顏色 //ui->widget->graph(1)->setBrush(QBrush(QColor(0,255,0))); //傳入數(shù)據(jù) ui->widget->graph(1)->setData(temp,temp1); /*-------------------------------------------*/ //畫動態(tài)曲線時,傳入數(shù)據(jù)采用addData,通過定時器多次調(diào)用,并在之后調(diào)用ui->widget->replot(); //動態(tài)曲線可以通過另一種設(shè)置坐標的方法解決坐標問題: //setRange ( double position, double size, Qt::AlignmentFlag alignment ) //參數(shù)分別為:原點,偏移量,對其方式,有興趣的讀者可自行嘗試,歡迎垂詢 /*-------------------------------------------*/ //設(shè)置右上角圖形標注名稱 ui->widget->graph(1)->setName("直線"); //設(shè)置X軸文字標注 ui->widget->xAxis->setLabel("time"); //設(shè)置Y軸文字標注 ui->widget->yAxis->setLabel("temp/shidu"); //設(shè)置X軸坐標范圍 ui->widget->xAxis->setRange(-20,20); //設(shè)置Y軸坐標范圍 ui->widget->yAxis->setRange(-1100,1100); //在坐標軸右側(cè)和上方畫線,和X/Y軸一起形成一個矩形 ui->widget->axisRect()->setupFullAxesBox(); } Widget::~Widget() { delete ui; }
效果圖如下:
感謝你能夠認真閱讀完這篇文章,希望小編分享的“qt中QCustomplot庫如何生成靜態(tài)、動態(tài)曲線”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學習!
當前題目:qt中QCustomplot庫如何生成靜態(tài)、動態(tài)曲線
網(wǎng)站URL:http://aaarwkj.com/article28/pccgjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、App開發(fā)、用戶體驗、網(wǎng)站排名、網(wǎng)站改版、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)