根据您提供的代码,我发现在 redo()
函数中有一处问题。在执行 paths.erase(paths.begin() + currentPathIndex, paths.end());
之后,您需要重新将新的路径添加到容器中。
请修改 redo()
函数如下:
void WhiteBoard::redo()
{
if (currentPathIndex < paths.size() - 1) { // 当前路径索引小于最大索引才能执行重做操作
++currentPathIndex;
QPainterPath newPath;
newPath.moveTo(paths[currentPathIndex].currentPosition());
paths.append(newPath);
update();
}
}
这样,在执行 paths.erase()
后,我们再创建一个新的路径并添加到容器中,然后通过调用 update()
刷新绘制。
请尝试以上修改,看看是否可以解决问题。如果还有其他疑问,请随时提问。
内容由零声教学AI助手提供,问题来源于学员提问