Добрый день!
Передо мной стоит задача разработать класс для отображения области интереса на изображении (эллипс и подпись). Реализовано с помощью наследования от QGraphicsItem перемещение, изменение размеров эллипса класс itemRoiCircle. Подпись - потомок QGraphicsTextItem. Подпись добавляется в конструкторе класса itemRoiCircle. При перемещении эллипса мышкой по изображению я рассчитываю по его координатам и размерам среднее значение пикселей изображения внутри него. На изображение может быть добавлено неограниченное число эллипсов. В результате должна изменяться подпись для одного перемещаемого эллипса. У меня происходит копирование текста на все подписи добавленных эллипсов. Как это можно исправить?
itemRoiCircle::itemRoiCircle(QGraphicsScene *scene, QObject *parent) :
QObject(parent), QGraphicsItem(), m_innerRect(initialRect), m_hovered(false), m_activeZone(itemRoiCircle::NONE)
{
initialRect = QRectF(-30, -30, 60, 60);
m_innerRect = initialRect;
m_hovered = false;
scene->addItem(this);
ItemText = new itemTextInfo;
ItemText->setParentItem(this);
ItemText->setPos(QPointF(initialRect.x(),initialRect.y()-20));
ItemText->setFlags(ItemIsMovable);
this->setAcceptHoverEvents(true);
}
void itemRoiCircle::setstatisticText(double mean, double std, double area) {
str = "";
QString temp = "";
str = "Mean:";
str.append(temp.setNum(mean, 'f', 2));
str.append("\n");
temp = "";
str.append("std:").append(temp.setNum(std, 'f', 2));
str.append("\n");
temp = "";
str.append("area").append(temp.setNum(area, 'f', 2));
str.append("\n");
childText = this->childItems();
qgraphicsitem_cast<itemTextInfo*> (childText.at(0))->setPlainText(str);
}
itemTextInfo::itemTextInfo(QGraphicsTextItem *parent)
:QGraphicsTextItem()//, m_fonttext(&QFont("Times", 10)), m_paletteText()
{
QFont newFont;
newFont.setFamily("Helvetica");
newFont.setPointSize(11);
setFont(newFont);
this->setDefaultTextColor(Qt::yellow);
}