使用Qt访问二维QVector中的数据

使用Qt访问二维QVector中的数据,qt,plot,qt4,qt5,qvector,Qt,Plot,Qt4,Qt5,Qvector,使用在线来源,我已设法实时绘制传感器值随时间变化的4个图表,但我希望使用传感器的值绘制实时图表,使用先前图表中的值绘制第5个图表。变量sampleVector是一个2D数组,包含随时间变化的感官值(Y变量)(X变量) 第五个图的公式为: Plot5=-0.5*(Plot0+Plot1)。。。所有的样品 下面是我实现这一目标的尝试,但没有成功。第五个图的绘制速度似乎是附加x值的两倍。它似乎也不喜欢我乘以一个值,比如“-0.5”。我不熟悉Qt,还没有找到一种方法来操纵和使用“sampleVector

使用在线来源,我已设法实时绘制传感器值随时间变化的4个图表,但我希望使用传感器的值绘制实时图表,使用先前图表中的值绘制第5个图表。变量sampleVector是一个2D数组,包含随时间变化的感官值(Y变量)(X变量)

第五个图的公式为: Plot5=-0.5*(Plot0+Plot1)。。。所有的样品

下面是我实现这一目标的尝试,但没有成功。第五个图的绘制速度似乎是附加x值的两倍。它似乎也不喜欢我乘以一个值,比如“-0.5”。我不熟悉Qt,还没有找到一种方法来操纵和使用“sampleVector”的Y值。 我也不太明白变量的格式,如果可以解释的话,请

先谢谢你

void Plot::plotSampleVector(QVector<QVector<QPointF> > sampleVector){

//*** length of the data
 const int sampleSize = sampleVector.length();

//***Append new values to "QVector<Plot *> d_plots"
 for (int ii=0; ii< sampleSize; i++){

    d_plots[0] -> AppendPoint(sampleVector.at(ii).at(0));
    d_plots[1] -> AppendPoint(sampleVector.at(ii).at(1));
    d_plots[2] -> AppendPoint(sampleVector.at(ii).at(2));
    d_plots[3] -> AppendPoint(sampleVector.at(ii).at(3));
//***Problem Code:
    d_plots[4] -> AppendPoint(-0.5 * (sampleVector.at(ii).at(0) + sampleVector.at(ii).at(1)));

  }

//***Draw Curves
  for (int ii=0; ii<5; ii++){
    d_plots[ii] ->DrawCurveSegment(sampleSize)
   }

}
void Plot::plotSampleVector(QVector sampleVector){
//***数据长度
const int sampleSize=sampleVector.length();
//***将新值附加到“QVector d_图”
对于(int ii=0;ii附录点(采样向量.at(ii).at(0));
d_图[1]->附录点(样本向量.at(ii).at(1));
d_图[2]->附录点(样本向量.at(ii).at(2));
d_图[3]->附录点(样本向量.at(ii).at(3));
//***问题代码:
d_图[4]->附录点(-0.5*(采样向量.at(ii).at(0)+采样向量.at(ii).at(1));
}
//***画曲线
对于(int ii=0;iiDrawCurveSegment(样本大小)
}
}

您正在操作行为类似于数学点的
QPointF
。 所以当你这么做的时候

-0.5 * (sampleVector.at(ii).at(0) + sampleVector.at(ii).at(1))
您正在使用以下内容创建新点:

x = -0.5 * (x_0 + x_1)
y = -0.5 * (y_0 + y_1)
但从你的问题来看,我认为你想要的是:

x = x_0 = x_1
y = -0.5 * (y_0 + y_1)
可以写入(如果x值相同):

QPointF(sampleVector.at(ii).at(0).x(), -0.5 * (sampleVector.at(ii).at(0).y() + sampleVector.at(ii).at(1).y()))