【发布时间】:2010-06-25 16:51:55
【问题描述】:
好吧,我正在尝试在许多图像绘制程序中实现类似于“撤消”功能的东西。我遇到的问题是:我正在尝试在 QVector 中制作 QImage 对象的备份副本(最多存储 10 个最新的 QImage 副本用于备份),然后尝试在另一个函数中检索这些备份。问题是没有正确创建备份(因为当我尝试恢复备份的映像时,没有任何反应)。我知道问题出在备份部分而不是恢复部分,因为当我备份具有红色背景的新临时图像时,它可以完美恢复..
这是备份功能代码:
imageBackups.append(image);
'image' 是我要备份的 QImage 对象..
这是备用备份(存储红色背景图像) - 我使用它只是为了查看此版本的备份是否有效,它确实有效:
QImage newImage(QSize(100,100), QImage::Format_RGB32);
newImage.fill(qRgb(255, 0, 0));
imageBackups.append(newImage);
这里是恢复代码:
image =imageBackups.at(imageBackups.size()-1);
QPainter painter(&image);
painter.drawImage(QPoint(0,0),imageBackups.at(imageBackups.size()-1));
'image' 的定义与上面的 newImage 完全相同,只是在这种情况下大小为 800x400..
【问题讨论】:
-
QVector 可能不是存储备份图像的最佳数据结构。 QList 或 QQueue 可能更适合这种用途。