Qgraphicsitem / pixmap不在图形场景中显示

时间:2012-12-14 21:26:43

标签: qt4

ui->setupUi(this);
scene = new QGraphicsScene(this);
ui->graphicsView->setScene(scene);
//scene->setSceneRect(-200,-200,300,300);
//ui->graphicsView->setRenderHint(QPainter::Antialiasing);

QPixmap pic (":/Single_linked_list.png");
//pic.load(":/Single_linked_list.png");
QGraphicsPixmapItem *item = new QGraphicsPixmapItem (/*pic*/);
item->setPixmap(pic);
scene->addPixmap(pic);

scene->addItem(item);
scene->
// scene->show();

//painter.drawPixmap(/*scene->sceneRect().bottomLeft().x()+0.1*/0.10,/* scene->sceneRect().bottomLeft().y()-0.1*/0.10, pic);

以上是我将图片添加到图形项目的代码。无论我做什么,它都会显示图形场景,但不会显示pixmap / pixmapitem。出了什么问题,我该如何解决?

此外,我打算进一步制作该图像的动画。哪个容器最适合图形场景中的picmap或pixmap项目?

2 个答案:

答案 0 :(得分:1)

检查QPixmap对象是否已使用给定资源正确初始化。您可以通过调用QPixmap :: isNull()来完成此操作。如果它为null,则表示未正确初始化,问题是资源。

答案 1 :(得分:0)

您的场景设置似乎很好。您可以通过在场景中的任何所需位置添加QGraphicsRectItem来检查您的场景是否正常工作。

将pixmap添加到现有场景 -

QGraphicsPixmapItem *newItem=new QGraphicsPixmapItem(QPixmap(":/Single_linked_list.png"));
scene->addItem(newItem);

这会将pixmap项添加到场景中并显示它。您无需明确调用它来显示图像。

如果要应用平移动画(如平移,旋转或缩放),可以使用setPos,setScale或setTransform函数。为了更好地控制,您可以使用Qt提供的Animation Framework。它适用于任何QGraphicsItem,即QGraphicsPixmapItem。查看文档以获取更多参考。

查看此视频以了解Qt GraphicsView基础知识 - http://www.youtube.com/watch?v=b35JF4LqtBs并查看此链接以获取简单的QGraphicsItem动画 - http://www.youtube.com/watch?v=fmSs2mNGh9I