Qt實用技巧:QCustomPlot做北斗GPS顯示絕對位置運動軌跡和相對位置運動軌跡圖的時,使圖按照輸入點順序連曲線

需求

  使用QCustomPlot繪製多個目標的北斗運行軌跡圖,包括累計絕對位置圖和記錄時刻的相對位置圖。
  當前繪製存在問題:在這裏插入圖片描述  在這裏插入圖片描述
  交付客戶前,公司內部自測流程發現的問題。
  實際預期效果爲:
  在這裏插入圖片描述

 

原因

  QCustomPlot加入數據是按照x軸排列,也可以按照y軸排列,使用圖層就只能這樣。

 

嘗試一:使用QCPGraph排序

  在這裏插入圖片描述

  在這裏插入圖片描述

  在這裏插入圖片描述

  確認不支持曲線圖:
  在這裏插入圖片描述

嘗試二:查看官方曲線Demo源碼

  查看官方配套的曲線Demo(注意:全部搜索了”spline“都沒有,這是想看下支持三次插值繪製曲線的額外功能,但是搜索可能某些版本有):
  在這裏插入圖片描述
  在這裏插入圖片描述
  QCustomPlot要按照輸入點順序連線,那麼就需要直接使用曲線QCPCurve(曲線類)進行操作,而不是使用QCPGraph類(addGraph產出)
  測試數據如下:

void LongitudeLatiudeTrackDiagramWidget::test()
{
    QVector<double> keys;
    QVector<double> values;
    keys << 1.0 << 2.0 << 3.0 << 2.0 << 1.0;
    values << 1.0 << 2.0 << 3.0 << 4.0 << 5.0;

    // 步驟一:創建曲線
    QCPCurve *pCPCurve = new QCPCurve(_pLongitudeLatiudeTrackDiagramCustomPlot->xAxis, _pLongitudeLatiudeTrackDiagramCustomPlot->yAxis);
    // 步驟二:曲線數據
    pCPCurve->addData(keys, values);

    _pLongitudeLatiudeTrackDiagramCustomPlot->replot();
}

  測試效果如下:
  在這裏插入圖片描述

 

解決方法

  1.重新定製控件,每一個目標由QCPGraph改爲QCPCurve
  2.同步修改操作修改清空、添加、屬性設置、緩存等操作函數

 

最終效果

  絕對位置累計運動軌跡圖:
  在這裏插入圖片描述
  當幀數據相對位置圖:
  在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章