|
1Qter豆
本帖最后由 sywh 于 2014-4-18 16:35 编辑
.h
QString fileName,fileNameBackup;
QMovie *move;
比如我在一个槽函数里显示一张图片原始代码为:
static int times=0;
fileName=QFileDialog::getOpenFileName( this,tr("打开文件"),".",tr("任何文件(*.*);;文本文件(*.txt);;XML文件(*.xml);;Images (*.png *.xpm *.jpg)"));
move=new QMovie(fileNameBackup);
times++;
ui->label_3->setText("open pic_"+QString::number(times,10)+"_times");
ui->label->setMovie(move);
move->start();
更改后的代码:
static int times=0;
fileName=QFileDialog::getOpenFileName( this,tr("打开文件"),".",tr("任何文件(*.*);;文本文件(*.txt);;XML文件(*.xml);;Images (*.png *.xpm *.jpg)"));
fileNameBackup=fileName;
if(fileName!=NULL)
{
fileNameBackup=fileName;
ui->lineEdit->setText(fileName);
if(times>0)
delete move;//防止内存泄露
}
move=new QMovie(fileNameBackup);
times++;
ui->label_3->setText("open pic_"+QString::number(times,10)+"_times");
//ui->label->move(50,100);
ui->label->setMovie(move);
move->start();
//delete move;
可以看出如果只按照原始代码来处理的话,如果非常频繁的打开图片的话,内存泄露很严重,我测试的图片只有337*214的分辨率。但是后面的代码就基本没什么变化了。
不能在move->start();后面Delete move,一delete图片就不显示了。不知道各位有什么好的处理办法麻烦分享一下,谢谢。
另外一个问题,每日图片上传限制大小在1M好麻烦,像我今天的图片截大点就上传不了了。这个能不能改一下?谢谢管理
@yafeilinux @Syylc120317 @Joey_Chan
|
最佳答案
查看完整内容
这里的代码想实现什么功能呢?不会是只想用来测试内存泄露的吧。
对于附件限制为1M,这个是根据等级来定的。http://www.qter.org/forum.php?mod=viewthread&tid=3
上传图片最好截图为jpg或gif格式的,太大的图片会影响访问效果的。
|