我想用一个应用程序画多条线。每行包含三个“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/