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() показывает картинку, а в конструкторе нет


person Aidin.T    schedule 17.05.2013    source источник


Ответы (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();
person PrisonMonkeys    schedule 17.05.2013