0

嗨,iv 查看了其他问题和解决方案,但似乎对我的具体问题没有帮助。

我只是想将一张图片添加到我使用 Qt 设计器添加的 GraphicsView

.cpp

void test::populateScene()
{
     QImage image(":/images/myFile.png");
     QGraphicsPixmapItem item(QPixmap::fromImage(image));
     QGraphicsScene *scene = new QGraphicsScene;
     scene->addItem(&item);
     ui->graphicsView->setScene(scene); 
}

我有必要的包括,但是当我点击运行时,程序只是立即提出一个没有响应的消息

我没有编译器错误只是点击运行然后得到test.exe is not responding

任何想法,这似乎应该很简单,但我无法弄清楚为什么这不正确(主要是因为没有编译器错误可以查看并找到崩溃的原因)

4

2 回答 2

0

[解决了]

    QImage image(":/images/myFile.png");
    QGraphicsScene *scene = new QGraphicsScene();
    scene->addPixmap(QPixmap::fromImage(image));
    scene->setSceneRect(0,0,image.width(),image.height());
    ui->graphicsView->setScene(scene);

我在这里或其他地方没有找到其他将图像放入图形视图的解决方案,所以我将发布此内容以帮助其他人,现在我的问题已解决,请随时提问

于 2013-04-16T13:34:21.033 回答
0

你必须在堆上分配你的新项目!

http://harmattan-dev.nokia.com/docs/library/html/qt4/qgraphicsscene.html#addItem

将项目及其所有子项添加或移动到此场景。此场景拥有该项目的所有权

函数的描述非常清楚:它需要比你的函数范围更有效的指针,以便它可以获得它的所有权。

void test::populateScene()
{
     QImage image(":/images/myFile.png");
     QGraphicsPixmapItem *item = new QGraphicsPixmapItem(QPixmap::fromImage(image));
     QGraphicsScene *scene = new QGraphicsScene;
     scene->addItem(item);
     ui->graphicsView->setScene(scene); 
}
于 2013-04-16T14:02:43.337 回答