0

qt symbianプロジェクトがあり、QMainWindowの請負業者にプログラムで背景画像を設定しています。しかし、そのバグを発見しました。たとえば、そのQMainWindowを15回開いたり閉じたりすると、バックグラウンドに使用したpixmapがnullを返します。実行中にいくつかの情報を保持する静的クラスでそのpixmapを静的にしましたが、状況は改善されません。私はどんな助けにも感謝します。これがいくつかのコード例です

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);     
4

1 に答える 1

0

これを確認するには、ソースをステップスルーする必要がありますが、QPixmapコンストラクターがnullを返す原因の1つは、ピックスマップに十分なメモリを割り当てることができない場合です。(非常に大きな画像でこの問題が発生しました。)

以前のピックスマップで使用されていたメモリの割り当てを解除できましたか?アプリケーションを実行するときにメモリプロファイラーを実行し、メモリがリークしていないかどうかを確認します。

于 2012-03-29T14:57:11.247 に答える