1

在继承自 QGraphicsItem 的类 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"));
}
4

1 回答 1

0

项目在场景中出现的方式只有两种:

  • 使用 addItem() 直接添加。
  • 或者成为已经在现场的项目的孩子。

在您的情况下,显示“矩形”和“圆圈”是因为它们是子级,CustomItem但“pi”不是,所以它失败了,解决方案是作为父级传递给“this”:

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

或者

QGraphicsPixmapItem* pi =  new QGraphicsPixmapItem(QPixmap(":/icons/image"));
pi->setParent(this);
于 2020-01-06T22:50:19.627 回答