2
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 项?

4

2 回答 2

1

检查 QPixmap 对象是否已使用给定资源正确初始化。你可以通过调用 QPixmap::isNull() 来做到这一点。如果它为空,则它没有正确初始化,问题出在资源上。

于 2012-12-18T17:55:57.423 回答
0

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

将像素图添加到现有场景 -

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

这会将像素图项添加到场景中并显示它。您不需要显式调用它来显示图像。

如果您想应用普通动画,如平移、旋转或缩放,您可以简单地使用 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

于 2012-12-15T18:52:27.893 回答