非常抱歉给您带来的困扰。在删除 QPainterPath 对象之前,您需要将它从画布上移除而不是直接删除。
以下是修改后的代码示例:
void WhiteBoard::mouseMoveEvent(QMouseEvent *event)
{
if (event->buttons() & Qt::LeftButton) {
// 绘制画笔路径逻辑
update();
}
if (event->buttons() & Qt::RightButton) {
if (currentPathIndex >= 0 && currentPathIndex < paths.size()) {
// 从画布上移除当前路径
scene()->removeItem(paths.at(currentPathIndex));
// 删除当前路径对象
delete paths.takeAt(currentPathIndex);
pathPens.takeAt(currentPathIndex);
redoPaths.clear();
redopathPens.clear();
--currentPathIndex;
update();
}
}
}
这样做可以确保只删除了 QPainterPath 对象,并且不会擦掉已经绘制的内容。再次感谢您的指正和耐心!如果还有其他问题,请随时提问。
内容由零声教学AI助手提供,问题来源于学员提问