使用 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

Qt 如何从 QVector 中的数据创建位图并将其显示在小部件上?

Qt QVector “isDetached()“

如何在 QT 中制作二维数组?

Qt6-QVector分析

Qt5 Visual Studio 2012 插件不允许调试到 QStack/QVector