我想用一个应用程序画多条线。每行包含三个“x”值和三个“y”值,因此我使用带有3个点的QPointF。

现在我想用数组中的值绘制4条线。我有两个数组。一个代表“x”值,另一个代表“y”值。

数组看起来像这样:

("676.0", "930.0", "930.0", "930.0", "930.0", "1002.0", "1002.0", "1002.0", "1170.0", "1170.0", "1410.0", "1410.0")

值1-3用于第一行。第二行4-6 ...

我为所有4行创建一个简单的循环。
for(int z = 0; z < 12; z+=3)
{
    static const QPointF points[3] = {
         QPointF(lineXarray[z].toDouble(), lineYarray[z].toDouble()),
         QPointF(lineXarray[z+=1].toDouble(), lineYarray[z+=1].toDouble()),
         QPointF(lineXarray[z+=2].toDouble(), lineYarray[z+=2].toDouble())};
    painter.drawPolyline(points, 3);
}

我的想法是第二个QPoint获得第二个值,依此类推,然后将循环增加3。
但是他只画第一线。
我怎么了

最佳答案

问题是您也在z运算符中也增加了[]计数器,因此它很快达到了上限。因此,循环仅执行一次。我将以以下方式编写循环:

for(int z = 0; z <= 12 - 3; z += 3)
{
    QPointF points[3] = {
         QPointF(lineXarray[z].toDouble(), lineYarray[z].toDouble()),
         QPointF(lineXarray[z + 1].toDouble(), lineYarray[z + 1].toDouble()),
         QPointF(lineXarray[z + 2].toDouble(), lineYarray[z + 2].toDouble())};
    painter.drawPolyline(points, 3);
}

您无需将点数组声明为静态。请注意,我将z递增到12 - 3 = 9以防止溢出。

关于c++ - 在QT中画多条线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29920967/

10-10 14:56