使用 Qt 访问 2D QVector 中的数据
Posted
技术标签:
【中文标题】使用 Qt 访问 2D QVector 中的数据【英文标题】:Accessing the data in 2D QVector using Qt 【发布时间】:2017-01-12 12:27:20 【问题描述】:使用在线资源,我设法随时间绘制了 4 个传感器值图,但是我想使用来自传感器的值绘制一个实时图,使用之前的图的值绘制第 5 个图。变量 sampleVector 是一个二维数组,包含随时间变化的感官值(Y 变量)(X 变量)
第 5 个图的公式是: Plot5= -0.5 * (Plot0 + Plot1) ... 在所有样本中
以下是我实现这一目标的尝试,但它没有奏效。第 5 个图的绘制速度似乎是它的两倍,就像它附加了两倍的 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)
【问题讨论】:
【参考方案1】:您正在操纵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()))
【讨论】:
以上是关于使用 Qt 访问 2D QVector 中的数据的主要内容,如果未能解决你的问题,请参考以下文章
初始化并访问 <QVector< QVector<int> > QT5