Russian Qt Forum
Апрель 18, 2024, 18:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с изменением текста потомка класса QGraphicsTextItem  (Прочитано 2360 раз)
amadeyA
Гость
« : Июнь 27, 2017, 14:24 »

Добрый день!
Передо мной стоит задача разработать класс для отображения области интереса на изображении (эллипс и подпись). Реализовано с помощью наследования от 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);

}
Записан
amadeyA
Гость
« Ответ #1 : Июль 03, 2017, 11:19 »

Решение нашлось. Не передавался указатель на изменяющийся элемент ROI, поэтому функция изменяла текст для всех элементов.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.044 секунд. Запросов: 20.