painter.setPen(QPen(Qt::blue, 5)); // 设置画笔颜色和宽度 for (int i = 0; i < paths[i].size() - 1; i++) { painter.drawLine(paths[i][i]->getX() * 25 + 200, paths[i][i]->getY() * 25 + 50, paths[i][i + 1]->getX() * 25 + 200, paths[i][i + 1]->getY() * 25 + 50); },爲什麽一運行,就白屏卡死,怎麽修改代碼
时间: 2024-02-01 08:13:20 浏览: 105
event-paint.rar_Linux/Unix编程_QT_
可能是因为 `paths` 数组中没有数据,导致程序卡死。你可以在运行前检查一下 `paths` 数组是否有数据。
此外,你的循环条件应该是 `i < paths.size() - 1`,而不是 `i < paths[i].size() - 1`。因为 `paths` 是一个二维数组,你需要遍历每个子数组,即 `paths` 的大小,而不是 `paths[i]` 子数组的大小。
修改代码如下:
```c++
if (paths.size() > 0) { // 检查 paths 是否有数据
painter.setPen(QPen(Qt::blue, 5)); // 设置画笔颜色和宽度
for (int i = 0; i < paths.size() - 1; i++) { // 遍历每个子数组
for (int j = 0; j < paths[i].size() - 1; j++) { // 遍历每个子数组中的点
painter.drawLine(paths[i][j]->getX() * 25 + 200, paths[i][j]->getY() * 25 + 50, paths[i][j + 1]->getX() * 25 + 200, paths[i][j + 1]->getY() * 25 + 50);
}
}
}
```
这样可以避免白屏卡死问题,并且可以正确绘制每个子数组中的路径。
阅读全文