QGraphicsPixmapItem 不显示在 QGraphicsScene 中

QGraphicsPixmapItem doesn't show in QGraphicsScene

在继承自 QGraphicsItem 的 class GraphicWidgetItem 中,我创建了矩形、圆形和图片。除图片外,所有内容均已显示。我做错了什么?

CustomItem::CustomItem( QObject *parent):
   GraphicWidgetItem(parent)
{
    QGraphicsRectItem *topLevel = new QGraphicsRectItem(this);
    topLevel->setRect(0, 0, 20, 20);
    topLevel->setBrush(Qt::gray);
    topLevel->setPos(-30 , -30);

    QGraphicsRectItem *lowLevel = new QGraphicsRectItem(this);
    lowLevel->setRect(0, 0, 20, 20);
    lowLevel->setBrush(Qt::red);
    lowLevel->setPos(-30 , 60);

     QGraphicsEllipseItem *circle = new QGraphicsEllipseItem(this);
     circle->setBrush(Qt::green);
     circle->setRect(0, 0, 20, 20);

    QGraphicsPixmapItem* pi =  new QGraphicsPixmapItem(QPixmap(":/icons/image"));
}

物品出现在场景中只有两种方式:

  • 直接使用addItem()添加。
  • 或者是已经在现场的项目的children。

在你的情况下显示 "rectangles" 和 "circles" 是因为它们是 CustomItem 的 children 但 "pi" 不是所以它失败了,解决方案是传递给 "this" 作为 parent:

QGraphicsPixmapItem* pi =  new QGraphicsPixmapItem(QPixmap(":/icons/image"), this);

或者

QGraphicsPixmapItem* pi =  new QGraphicsPixmapItem(QPixmap(":/icons/image"));
pi->setParent(this);