0
我有一个qt symbian项目,并且我在QMainWindow的const字符上编程设置了背景图片。但是我发现那个bug,如果我打开并关闭那个QMainWindow例如15次,我用于背景的pixmap返回null。我在我的静态类中创建了这个pixmap,我在执行期间保留了一些信息,但这对我的情况没有帮助。我会很感激任何帮助。下面是一些代码示例qt qpixmap在一段时间后返回null
SettingsWindow::SettingsWindow(QWidget *parent) :
QMainWindow(parent), ui(new Ui::Settings)
{
ui->setupUi(this);
// getting screen geometry
QDesktopWidget* desktopWidget = qApp->desktop();
QRect screenGeometry = desktopWidget->screenGeometry();
ConstantVariables* pointer = ConstantVariables::CVinstance();
set image with screen geometry
QPalette* palette = new QPalette();
palette->setBrush(QPalette::Background,*(new QBrush(pointer->backGround->scaled(screenGeometry.width(),screenGeometry.height()))));
setPalette(*palette);
有一些内存泄漏,但是,当打开QMainWindow时,我一次又一次不加载pixmap。我在main上加载pixmap,并在QMainWindow启动时使用它。在关闭QMainWindow我删除用户界面,所以必须没有内存泄漏我找不到内存泄漏。 – Utk12 2012-03-30 10:40:50
创建qbrush可能是内存泄漏的原因? – Utk12 2012-03-31 07:03:18
是的,我敢打赌是这样。将图像传递给构造函数可能会使图像的*副本*存储在QBrush实例中。既然你是在堆上创建它,并且从不删除它或它的任何父母,那么这是一个很大的漏洞。内存分析器(Valgrind)可以证实这一点。 – 2012-04-12 12:28:10