QGraphicsPixmapItem не отображается в QGraphicsScene - PullRequest
1 голос
/ 07 января 2020

В унаследованном классе GraphicWidgetItem от QGraphicsItem я создаю прямоугольники, круг и картинку. Все отображается кроме изображения. Что я делаю не так?

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"));
}

1 Ответ

0 голосов
/ 07 января 2020

Существует только 2 способа появления элемента в сцене:

  • Добавить напрямую, используя addItem ().
  • Или быть потомками элемента, который уже включен сцена.

В вашем случае "прямоугольники" и "круги" показаны, потому что они являются потомками CustomItem, но "пи" не так, поэтому он не работает, решение состоит в том, чтобы перейти к "это "как родитель:

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

или

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