0

ローカル ディレクトリに「tooltip.png」ファイルがあります。以下のコードは、int main() に入れると機能しますが、MainWindow クラス コンストラクターに入れると機能しません。

QGraphicsScene scene;
QGraphicsView *view = new QGraphicsView(&scene);
QGraphicsPixmapItem item(QPixmap("tooltip.png"));
scene.addItem(&item);
view.show();

int main() では画像が表示されますが、コンストラクターでは表示されません

4

1 に答える 1

1

スタック上に作成sceneします。つまり、コンストラクターの最後にあるスコープ外になると削除されます。MainWindowsceneのコンストラクター内で次のように構築してみてください。

QGraphicsScene scene(this);

シーンに親を提供することにより、Qt はその親 (あなたの場合は mainWindow) と一緒に生き続けることを確認します。Qt がメモリ管理を行うため、メモリ リークを心配することなくポインタを使用できます。

QGraphicsScene* scene = new QGraphicsScene(this);
QGraphicsView* view = new QGraphicsView(scene, this); // Give the view a parent too to avoid memory leaks
QGraphicsPixmapItem* item = new QGraphicsPixmapItem(QPixmap("tooltip.png"), this);
scene->addItem(&item);
view->show();
于 2013-05-17T13:24:57.537 に答える