我的本地目录中有一个“tooltip.png”文件。 当我把它放在int main()中时,下面的代码工作,但是当我把它放在我的MainWindow类构造函数中时它不起作用:
QGraphicsScene scene;
QGraphicsView *view = new QGraphicsView(&scene);
QGraphicsPixmapItem item(QPixmap("tooltip.png"));
scene.addItem(&item);
view.show();
在int main()中它显示了图片但在构造函数中没有
答案 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();