QGraphicsView没有显示图片

时间:2013-05-17 13:06:51

标签: qgraphicsview

我的本​​地目录中有一个“tooltip.png”文件。 当我把它放在int main()中时,下面的代码工作,但是当我把它放在我的MainWindow类构造函数中时它不起作用:

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

在int main()中它显示了图片但在构造函数中没有

1 个答案:

答案 0 :(得分:1)

您在堆栈上创建scene,这意味着一旦超出范围(即构造函数的末尾),它将被删除。 尝试在MainWindow的构造函数中构建scene

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