官方推出的qcharts以後,qt畫圖再也不用需要配置第三方的qcustomplot和qwt外掛程式了,qcharts功能比兩者都好,且易用安裝和使用。我用的是目前最新版的5.11.1這個版本(強烈推薦公升級)。安裝的時候只需要勾選qtcharts就行了。
qt += charts
然後再程式的開頭加上乙個巨集
qt_charts_use_namespace
都儲存以後,就可以開始了。
新增qcharts必須的標頭檔案:
#include #include
然後建立例項:
qchart *chart; qchartview *chartview;
還有新建乙個series作為圖表的資料來源:
qbarseries (用於建立柱狀圖)
qhorizontalbarseries (用於建立水平柱狀圖)
qhorizontalpercentbarseries (用於建立水平百分比柱狀圖)
qhorizontalstackedbarseries (用於建立水平層疊圖)
qpercentbarseries (用於建立百分比柱狀圖)qstackedbarseries (用於建立層疊圖/堆疊的條形圖)
qareaseries (用於建立面積圖)
qboxplotseries (用於建立箱形圖/盒須圖)
qpieseries (用於建立餅圖)
qxyseries (線性圖、曲線圖、散點圖的基類)
qlineseries (用於建立折線圖)
qsplineseries (用於建立曲線圖)
qscatterseries (用於建立散點圖)
我們畫乙個曲線圖,所以選擇qsplineseries,新增標頭檔案並建立例項:
#include
qsplineseries *series;
還要建立座標軸(也可直接建立預設座標軸),和選擇視窗布局,新增標頭檔案並建立例項:
#include #include
qhboxlayout *layout;qvalueaxis *axisx;qvalueaxis *axisy;
**如下:
pro檔案:
qt += charts
**件:
#ifndef widget_h
#define widget_h
#include #include #include #include #include #include #include using namespace qtcharts; //與下一行含義相同
//qt_charts_use_namespace
qt_begin_namespace
namespace ui
qt_end_namespace
class widget : public qwidget
;#endif // widget_h
cpp檔案:
#include "widget.h"
#include "ui_widget.h"
widget::widget(qwidget *parent)
: qwidget(parent)
, ui(new ui::widget)
widget::~widget()
ui介面拖拽乙個widget即可
記錄下來,以後忘了就不用到處找了。還有乙個發現就是可以不用建立qcharts例項,使用chartview->chart()替代**中的chart也可以使用。沒有深究。
最後的效果圖貼上:
注意:在分主要刻度和刻度時要計算,否則畫出來的點是錯誤的;
主要刻度: 要分的份數 + 1;也可以理解為實線的個數,因為0也算一條實線
例1:x軸的最大值是20,想要分成4份,則主要刻度就是 4+1
例2:x軸的最大值是20,想要分成20份,則主要刻度就是20+1
刻度:上乙個主要刻度和下個主要刻度中的區域分成幾份;可以理解為兩個實線間虛線的個數,因為網格線用虛線表示
(例如,x軸最大值是20,要分成4份,則在0到5之間需要四個網格,所以這裡寫4)
qt學習筆記(六)之簡析物件樹
qt提供了一種機制,能夠自動 有效的組織和管理繼承自qobject的qt物件,這種機制就是物件樹。qt物件樹在使用者介面程式設計上是非常有用的。它能夠幫助程式設計師減輕記憶體洩露的壓力。比如說當應用程式建立了乙個具有父視窗部件的物件時,該物件將被加入父視窗部件的孩子列表。當應用程式銷毀父視窗部件時,...
qt學習筆記(六)之簡析物件樹
qt提供了一種機制,能夠自動 有效的組織和管理繼承自qobject的qt物件,這種機制就是物件樹。qt物件樹在使用者介面程式設計上是非常有用的。它能夠幫助程式設計師減輕記憶體洩露的壓力。比如說當應用程式建立了乙個具有父視窗部件的物件時,該物件將被加入父視窗部件的孩子列表。當應用程式銷毀父視窗部件時,...
Qt學習筆記
1.參考資料 1 2 3 4 5 6 2.faq 2.1.qt creator 2.1.1.xp下用qt creator編譯自帶例子mdi sdi 當不勾選projects build settings build environment的 clear system environment 時,編譯...