我使用QGraphicsView使用以下语句加载图像:
var rgx = /^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/;
console.log(rgx.test("99/12/2015"));
Sleft,Sright和scene3被声明为
if (QFile().exists(pl)){
Sleft = new QGraphicsScene;
Sleft->addPixmap(pl);
ui->left->setScene(Sleft);
ui->left->show();
ui->left->update();
}
if (QFile().exists(pr) && (pr != "")){
Sright = new QGraphicsScene;
Sright->addPixmap(pr);
ui->right->setScene(Sright);
ui->right->show();
ui->right->update();
}
else {
scene3 = new QGraphicsScene;
ui->right->setScene(scene3);
ui->right->show();
}
我试图弄清楚为什么RAM使用量不断增加以及如何解决它。我想这可能与我每次调用方法时重新启用变量有关。
答案 0 :(得分:0)
问题是每次加载图像时都会创建一个新的QGraphicsScene
和一个新的像素图项,但是你不会销毁旧的场景和旧的像素图项。
每次加载图像时都没有必要创建新场景。您可以在启动时为每个QGraphicsScene
创建并设置一个QGraphicsView
。
如果要加载新图像,可以使用QGraphicsScene::addPixmap
并将返回的QGraphicsPixmapItem
指针保存到类变量中。如果已加载图片,则必须先使用delete
对其进行处理。
我建议您在C ++中了解有关内存分配的更多信息