Qt繪圖知識(一)


QCustomPlot是一個用於繪圖和數據可視化的Qt c++小部件。它沒有進一步的依賴關系,並且有很好的文檔。該繪圖庫專注於制作美觀、出版物質量高的2D繪圖、圖形和圖表,並為實時可視化應用程序提供高性能。

Setting up QCustomPlot

Getting QCustomPlot to work with your application is very easy:

•從官網下載最新版本

•像使用任何其他普通類文件一樣,使用qcustomplot.h和qcustomplot.cpp文件Use the qcustomplot.h and qcustomplot.cpp file like any other ordinary class file

對於Qt使用者

1、Right click on the root entry of your project in the left sidebar and choose Add Existing Files...

2、In the appearing file dialog, select the qcustomplot.h and qcustomplot.cpp files, to add them to your project. If this is done, your project structure and .pro file should look something like this:

如果您正在使用Qt 5.0以上版本,則需要將printsupport添加到.pro文件中的Qt變量中。在上面顯示的例子中,這是在一個greaterThan(QT_MAJOR_VERSION, 4)條件之后完成的。這確保在使用較老的Qt版本時不添加打印支持(和小部件)。

3、該項目現在可以使用QCustomPlot了。在表單的所需位置放置一個常規QWidget。右鍵點擊,點擊 Promote to...

在出現的對話框中,在提升類名旁邊的輸入字段中輸入QCustomPlot。頭文件旁邊的輸入應該自動填充正確的qcustomplot.h值。單擊Add將QCustomPlot添加到提升類列表中,最后單擊Promote將表單上的QWidget轉換為QCustomPlot。

不會在QtCreator(或QtDesigner)中看到任何即時的可視化更改,但是在運行應用程序時,將看到一個帶有軸線和網格線的空圖。

4、本教程使用m_Plot作為指向QCustomPlot實例的指針。如果您在QtCreator中推廣了小部件,那么您可能會通過ui->customPlot(或者您給小部件起的任何名稱)訪問相應的小部件。

在MainWindow.h文件中

#include "qcustomplot.h"
private:
    QCustomPlot *m_plot

5、您可以通過customPlot->addGraph()在圖中創建一個新的圖。然后給圖分配一些數據點,例如通過customPlot->graph(0)->setData(..),例如兩個QVector<double> for x and y (key and value)的形式。QCustomPlot使用術語鍵和值而不是x和y的原因是允許在分配哪個軸具有什么角色時具有更大的靈活性。所以如果你把左軸定義為"鍵軸",把底軸定義為"值軸",你就可以在圖的左邊畫一個直立的圖形。默認情況下,QCustomPlot小部件有四個軸:customPlot->xAxis、yAxis、xAxis2和類型為QCPAxis的yAxis2,分別對應於底部、左側、頂部和右側軸。它們的范圍定義了當前可見的部分:customPlot->xAxis->setRange(- 1,1)。

// 為曲線產生數據: 
QVector<double> x(101),y(101); 
for(inti=0;i<101;++i) 
{ 
x[i]=i/50.0- 1; // x goes from -1 to 1 
y[i]=x[i]*x[i]; // let's plot a quadratic function 
} 
// create graph and assign data to it: 
ui->qcustom->addGraph(); 
ui->qcustom->graph(0)->setData(x, y); 
// give the axes some labels: 
ui->qcustom->xAxis->setLabel("x"); 
ui->qcustom->yAxis->setLabel("y"); 
// set axes ranges, so we see all data: 
ui->qcustom->xAxis->setRange(-1, 1); 
ui->qcustom->yAxis->setRange(0, 1); 
ui->qcustom->replot();

qcustomui界面上widget提升后的名字。

6、要對屏幕上的情節進行任何類型的更改,請調用customPlot->replot()。注意,當小部件調整大小和觸發內置用戶交互時,將自動發生重繪。這種用戶交互包括用鼠標拖動軸范圍和用鼠標滾輪縮放。

標號和標簽是自動選擇的,the axis ticker通常被軸利用。這是QCPAxisTicker類型的實例,可以通過xAxis->ticker()訪問。您可以通過xAxis->ticker()->setTickCount(6)調整試圖創建的標號的數量。默認的軸標記器非常適合於簡單的數字顯示,但是也有專門的類,例如時間跨度、日歷日期、類別、pi(或其他符號單位)和對數軸。有關詳細信息,請參閱QCPAxisTicker文檔。

軸的刻度標簽(數字)永遠不會超出小部件邊界,即使它們變得更寬。這是由於自動保證金計算,默認情況下是打開的。如果勾選標簽和軸標簽需要更多的空間,它會使軸矩形收縮。如果不希望自動確定邊界,可以通過調用customPlot->axisRect()->setAutoMargins(QCP::msNone)禁用該行為。然后,您可以通過customPlot->axisRect()-> setmargin(..)手動調整頁邊距。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM