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