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在堆栈上创建,这意味着一旦超出范围,即在构造函数的末尾,它将被删除。尝试scene在 MainWindow 的构造函数中进行这样的构造:

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 回答