繼qwt、qcustomplot繪製折線圖之後,在qt5.7版本後將qt charts加入到了qt模組中。我們可以方便的使用這個模組,不用學複雜的qwt了。qt charts可以繪製很多樣式的圖形,比如折線、餅圖等,可以根據qt自帶的示例來看,可以幫助更快的做出效果。
用qt charts繪製,大概分為四個部分:資料(qxyseries)、qchart(不知怎麼稱呼)、座標軸(qabstractaxis)和檢視(qchartview)。
要注意的是qchart要先新增資料(qxyseries),再載入座標軸(載入軸的過程是先新增軸到chart上,再附加軸到series上)。這個一定要注意,我之前就是不清楚這部分,然後一直出問題。
還有一點就是: qchartview是繼承的是qgraphicsview,qchart繼承的是qgraphicswidget,所以我們可以用圖形檢視框架的知識,在其上面進行拓展,qt自帶的專案callout,我覺得就是很好的示例。
下面說一下詳細的流程:
(1)在.pro檔案中加入
qt +=charts
(2)在宣告檔案中,要寫命名空間,這個比較容易忘記。這個也有很多寫法,這裡不贅述。
qt_charts_use_namespace
(3)現在就要將各個部分搭建好,這就是之前說的要注意的地方。如果用的是designer,可以用控制項 graphics view代替,再將其提公升為qchartview就可以了(提公升的類名稱是qtcharts::qchartview,標頭檔案為qchartview.h),我這裡就是用的這種方式。
m_series=new qlineseries;
m_chart=new qchart;
m_series=new qlineseries;
m_series->setname("ss");
m_chart->addseries(m_series);
m_chart->createdefaultaxes();
m_axisx=new qvalueaxis;
m_axisx->setrange(0,60);
m_axisx->setgridlinevisible(true);
m_axisx->settickcount(11); //標記的個數
m_axisx->setminortickcount(5); //次標記的個數
m_axisy=new qvalueaxis;
m_axisy->setrange(-5,10);
m_axisy->setgridlinevisible(true);
m_axisy->settickcount(6);
m_axisy->setminortickcount(2);
m_chart->setaxisx(m_axisx,m_series);
m_chart->setaxisy(m_axisy,m_series);
m_chart->legend()->hide();
ui->graphicsview->setchart(m_chart);
ui->graphicsview->setrenderhint(qpainter::antialiasing);
(4)新增資料。這裡做的是動態的,通過定時器控制。裡面用了一些小技巧,仔細看
void mainwindow::handletimeout()
m_series->replace(points);
if(m_x>60)
m_x++;}}
(5)結果圖,這裡我還將示例callout的部分**加了進去,可以檢視當前點的值。
好了,小課堂結束了。
mysql的簡單用法 mysql簡單用法
刪除使用者 drop user jack drop比delete刪除的優勢在於drop可以刪除使用者的許可權,更加徹底 更改使用者名稱 rename user jack to jacknew 使用者的都存在與user表中,更改名稱,許可權不變 更改使用者密碼 update mysql.user se...
sudo的簡單用法
sudo 的簡單用法 sudo 是linux 下一種能讓普通使用者執行 root 使用者或者其他使用者的命令 在 linux 中為了能方便的作業系統,同事也為了減輕管理員的負擔,這裡就有了 sudo 這個工具,讓普通使用者能執行 root 使用者的一部分權利。在 linux unix 下專門為 su...
XPath的簡單用法
xpath 使用路徑表示式來選取 xml 文件中的節點或節點集。下面使用乙個簡單的xml檔案內容 定位到節點名稱為parent1的元素 xpath為 tree parent1 其中前面加 表示根元素,此時的xpath就是絕對路徑了,在這裡的例子中,因為tree為根元素,所以這裡的xpath也可以表示...