Когда уменьшается количество символов в тексте и происходит перерисовка элемента, кусок предыдущего текста остается. Т.е. рисуется новый текст поверх старого.
Пропает сей артефакт при клике на сцену.
Сам класс:
Java
class TextDesignItem extends QGraphicsItem {
public TextDesignItem() {
super();
}
private String text = new String();
public void setText(String t) {
text = t;
update();
}
public String getText() {
return text;
}
private QFont font = new QFont();
public void setFont(QFont f) {
font = f;
update();
}
public QFont getFont() {
return font;
}
@Override
public QRectF boundingRect() {
QFontMetricsF fm = new QFontMetricsF(font);
QRectF rect = fm.boundingRect(text);
rect.moveTo(0, 0);
return rect;
}
@Override
public void paint(QPainter painter, QStyleOptionGraphicsItem option, QWidget widget) {
painter.setRenderHint(QPainter.RenderHint.HighQualityAntialiasing, true);
painter.setFont(font);
QRectF rect = boundingRect();
// Добавил 5.0, т.к. текст может не поместиться в rect, и тогда будет обрезан
rect.setWidth(rect.width() + 5.0);
painter.drawText(rect, text);
// Нарисуем рамку вокруг элемента
if (isSelected())
qt_graphicsItem_highlightSelected(this, painter, option);
}
}
Тыкните в чем проблема, спасибо