将图像添加到QGraphicsView?

时间:2013-04-16 11:51:11

标签: c++ qt qgraphicsview

您好iv为此查看了其他问题和解决方案,但似乎没有一个对我的具体问题有所帮助。

我只是试图将图片添加到我使用Qt designer

添加的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

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

2 个答案:

答案 0 :(得分: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);

我在这里或其他地方找不到其他方法来获取图像到图形视图已经工作,所以我会发布这个帮助其他人现在我的问题解决了随意提问

答案 1 :(得分: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); 
}