Прокрутка QGraphicsView и QGraphicsScene

У меня экземпляр QGraphicsScene установлен на QGraphicsView в графическом интерфейсе с включенными полосами прокрутки и полным обновлением порта просмотра. Но когда я прокручиваю свой графический вид, я получаю, что элементы, добавленные в сцену qgraphics, исчезают в какой-то момент, хотя они добавляются в код правильно и, как ожидается, будут отображаться при прокрутке (пользовательский класс, унаследованный от QGraphicsItem):

  class CSquare : public QObject, public QGraphicsItem

Метод рисования реализован следующим образом:

void CSquare::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
    static int sz;
    painter->setFont(fnt_);
    painter->fillRect(this->r,this->br);
    painter->drawRect(this->r);
    //painter->drawText(this->p,this->txt);
    if (txt == "")
        return;
    if (fnt_.pixelSize()>0)
        sz = fnt_.pixelSize();
    else
        if (fnt_.pointSize()>0)
            sz = fnt_.pointSize();
        else
            if (fnt_.pointSizeF()>0)
                sz = fnt_.pointSizeF();

    switch (this->al_flag)
    {
    case 1:
        painter->drawText(this->p.x(),this->p.y(),sz*txt.size(),2*sz,Qt::AlignRight,this->txt);
        break;
    case 2:
        //painter->drawText(this->r,Qt::AlignLeft,this->txt);
        painter->drawText(this->p.x(),this->p.y(),sz*txt.size(),2*sz,Qt::AlignLeft,this->txt);
        break;
    case 3:
        //painter->drawText(this->r,Qt::AlignCenter,this->txt);
        painter->drawText(this->p.x(),this->p.y(),sz*txt.size(),2*sz,Qt::AlignCenter,this->txt);
        break;
    case 4:
        //painter->drawText(this->r,Qt::AlignJustify,this->txt);
        painter->drawText(this->p.x(),this->p.y(),sz*txt.size(),2*sz,Qt::AlignJustify,this->txt);
        break;
    }
}

Видно, как они исчезают при запуске приложения на этом видеоэкране:

https://www.box.com/s/h4h94%C3%971avgay1crzvyzx

Может кто-нибудь намекнуть, в чем проблема, как решить, чтобы графические элементы не исчезали на виде?

Заранее спасибо.

1 ответ

Да, извини. Проблема уже решена: проблема была в пользовательской функции в унаследованном классе:

QRectF boundingRect () const;

Это должно вернуть правильный прямоугольник. Теперь я исправил это в своем проекте и собираюсь удалить видео.

Спасибо за Ваше внимание.

Другие вопросы по тегам