QT學習筆記11月23日

需求分析:
1.創建三個座標系,分別表示溫度(T/°C),電壓(V/mV),時間(t/s)的兩兩對應關係。
2.創建一個點服務,每0.3秒給一個點,將點畫在座標系上。this

時序圖以下:
clipboard.pngspa

製做出來的最終效果圖以下:code

clipboard.png

首先須要畫好座標系。如圖所示就是我一開始畫好的座標系。blog

clipboard.png

不過這有一個問題,就是三個座標系都是放在了一張畫布上,若是再想增長座標系,須要改動的地方不少,甚至要改動原有的代碼,因此我作了一些改動,直接建立三塊畫布,每塊畫布上畫一個座標系。事件

clipboard.png

這樣每次建立新的座標系,只須要再添加一塊畫布,而後把座標系在畫布裏畫一下就好了ip

clipboard.png
clipboard.png

以後須要的就是建立一個點,而後把它畫出來了。
因爲此次的座標系一共有三個參數:溫度,電壓和時間,因此咱們須要點服務(pointService)每次給咱們的數據同時有這三個屬性,而後咱們再把它拆分紅三個座標系的point屬性get

clipboard.png

定義好了點以後,就能夠寫點服務了。it

clipboard.png

在這以後,只須要點擊start按鈕的時候達成如下條件,就能夠了
1.獲取到點服務傳過來的數據,並將數據拆分
2.將拆分後的數據乘以比例係數變成座標系的point(x,y)數據
3.畫點
點擊事件的代碼:class

void MainWindow::on_pushButton_clicked()
{cli

// 用於接收傳過來的點
Point poi;
// 拆分以後的三個座標系點
QPointF pointTop,pointLeft,pointRight;
PointService *poiSer = new PointService;
for (int i=0; i<100 ; i++){
    poi = poiSer->getOnePoint();
    // 將原點的X,Y再加上傳過來的點乘以比例,構成新的點,而後調用drawPoint方法。
    // 比例係數:傳過來的點×座標軸實際長度/座標軸最大刻度數。
    pointTop.setX(cooTop->getOriginPointX() + poi.getVol()
                  *cooTop->getRight()/cooTop->getScaleXmax());
    pointTop.setY(cooTop->getOriginPointY() - poi.getTem()
                  *cooTop->getTop()/cooTop->getScaleYmax());
    pointLeft.setX(cooleft->getOriginPointX() + poi.getTime()
                   *cooleft->getRight()/cooleft->getScaleXmax());
    pointLeft.setY(cooleft->getOriginPointY() - poi.getTem()
                   *cooleft->getTop()/cooleft->getScaleYmax());
    pointRight.setX(cooright->getOriginPointX() + poi.getTime()
                    *cooright->getRight()/cooright->getScaleXmax());
    pointRight.setY(cooright->getOriginPointY() - poi.getVol()
                    *cooright->getTop()/cooright->getScaleYmax());
    // 調用drawPoint方法,須要參數爲一個點以及畫布。
    cooTop->drawPoint(pointTop,&imagetop);
    cooleft->drawPoint(pointLeft,&imageleft);
    cooright->drawPoint(pointRight,&imageright);
    this->repaint();
    this->sleep(300);
}

}
畫點的代碼

clipboard.png

不足之處:這樣雖然實現了畫點的方法,可是數據的處理全都放在了點擊事件裏面,這個畫點的方法有點畫蛇添足,感受直接在點擊事件裏面直接畫比這樣還省事。

相關文章
相關標籤/搜索