Переопределение класса QGraphicsTextItem

скриншот к вопросу

Переопределил класс QGraphicsTextItem и все нужные мне методы. При добавлении текста на сцену:

  • текст добавляется
  • нет курсора
  • не выделяется
  • не редактируется
    (на фото этот текст вверху)

Но внизу в позиции 0,0 этот текст дублируется, у этого текста:

  • есть курсор
  • он выделяется
  • он редактируется (и после чего меняется верхний текст)

В приложении у меня уже есть класс, с помощью которого можно изменять размер и перемещать QGraphicsItem. С помощью которого я изменил размер и увидел нижний текст.
Я пробовал setPos() смещается верхний текст. Необходимо сделать, чтобы верхний текст редактировался у него был курсор, а нижний убрать.
Мой вопрос. В чем проблема? Как исправить?

Основной код класса.

Конструктор класса.

TextFigure::TextFigure(const QRectF rect, const QString text, QFont font, QPen pen, QGraphicsTextItem *parent) : QGraphicsTextItem(parent)
{
   gRect= rect;
   this->text= text;
   this->font= font;
   this->pen= pen;
   this->penWidth= pen.widthF();

   setFont(font);
   setDefaultTextColor(pen.color());

   setRect(gRect);
   setBoundingRect();
   setPos(0,0); // влияет на верхний текст, но он на месте

   QGraphicsTextItem::setAcceptHoverEvents(true);
   setTextInteractionFlags(Qt::TextEditorInteraction);

  QGraphicsTextItem::setFlags( QGraphicsTextItem::ItemIsSelectable
                                 | QGraphicsTextItem::ItemSendsGeometryChanges
                                 | QGraphicsItem::ItemIsFocusable
                                 );

   thisItem= this;
}

Переопределенный метод Paint.

QGraphicsTextItem::paint(painter, option, widget);
painter->save();
painter->setPen(pen.color());
painter->setFont(font);
if (isSelected())
{
    painter->setBrush(Qt::SolidPattern);
    painter->setBrush(QColor(240, 240, 240, 60));
}
painter->drawText( thisItem->boundingRect() ,this->text);
painter->setRenderHint(QPainter::Antialiasing, true);
QString text = toPlainText();
this->text= text;
// updateFontInfo();
// setBoundingRect();
painter->restore();

Ответы (0 шт):