31 QGraphicsTextItem(parent),
35 document() -> setDocumentMargin(1.0);
39 setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemSendsGeometryChanges | QGraphicsItem::ItemIsMovable);
40 setAcceptHoverEvents(
true);
46 connect(document(), SIGNAL(blockCountChanged(
int)),
this, SLOT(
adjustItemPosition(
int)));
62 if (xml_element.hasAttribute(
"size"))
64 int font_size = xml_element.attribute(
"size").toInt(&ok);
65 if (!ok || font_size < 1) {
68 QFont font_ = this->
font();
69 font_.setPointSize(font_size);
72 else if (xml_element.hasAttribute(
"font"))
75 font_.fromString(xml_element.attribute(
"font"));
81 setPos(xml_element.attribute(
"x").toDouble(),
82 xml_element.attribute(
"y").toDouble());
83 setRotation(xml_element.attribute(
"rotation", QString::number(0)).toDouble());
93 QDomElement xml_element = xml_document.createElement(
xmlName());
95 xml_element.setAttribute(
"x", QString::number(pos().x()));
96 xml_element.setAttribute(
"y", QString::number(pos().y()));
97 xml_element.setAttribute(
"text", toPlainText());
98 xml_element.setAttribute(
"font",
font().toString());
99 xml_element.setAttribute(
"rotation", QString::number(rotation()));
100 xml_element.setAttribute(
"color", defaultTextColor().
name());
110 QFont used_font =
font();
111 QFontMetrics qfm(used_font);
112 qreal document_margin = document() -> documentMargin();
118 document_margin + qfm.ascent()
130 QGraphicsTextItem::focusInEvent(e);
140 QGraphicsTextItem::focusOutEvent(e);
150 if (event -> key() == Qt::Key_Escape) {
154 QGraphicsTextItem::keyPressEvent(event);
163 QGraphicsTextItem::mouseDoubleClickEvent(e);
164 if (e -> button() == Qt::LeftButton) {
175 if (change == QGraphicsItem::ItemPositionHasChanged || change == QGraphicsItem::ItemSceneHasChanged) {
177 }
else if (change == QGraphicsItem::ItemSelectedHasChanged) {
178 if (value.toBool() ==
true) {
182 return(QGraphicsTextItem::itemChange(change, value));
189 QRectF r = QGraphicsTextItem::boundingRect();
190 r.adjust(0.0, -1.1, 0.0, 0.0);
200 return(toPlainText().isEmpty());
210 return(sceneBoundingRect());
228 QPointF new_pos =
mapPoints(initial_selection_rect, new_selection_rect, QList<QPointF>() <<
saved_point_).first();
232 qreal sy = new_selection_rect.height() / initial_selection_rect.height();
234 setProperty(
"real_size", qMax(1, qRound(new_font_size)));
239 if (
color != this->defaultTextColor())
241 QGraphicsTextItem::setDefaultTextColor(
color);
248 if (
text != this->toPlainText())
250 QGraphicsTextItem::setPlainText(
text);
259 QGraphicsTextItem::setFont(
font);
267 if((event->buttons() & Qt::LeftButton) && (flags() & QGraphicsItem::ItemIsMovable))
269 QPointF pos =
event->scenePos() + (
m_origine_pos -
event->buttonDownScenePos(Qt::LeftButton));
270 event->modifiers() == Qt::ControlModifier ? setPos(pos) : setPos(
elementScene()->snapToGrid(pos));
273 QGraphicsObject::mouseMoveEvent(event);
278 if(event->button() == Qt::LeftButton)
281 QGraphicsObject::mousePressEvent(event);
286 if((event->button() & Qt::LeftButton) && (flags() & QGraphicsItem::ItemIsMovable) &&
m_origine_pos != pos())
289 undo->setText(
tr(
"Déplacer un texte"));
294 QGraphicsObject::mouseReleaseEvent(event);
305 Q_UNUSED(new_block_count);
306 QPointF origin_offset =
margin();
308 QTransform base_translation;
309 base_translation.translate(-origin_offset.x(), -origin_offset.y());
310 setTransform(base_translation,
false);
311 setTransformOriginPoint(origin_offset);
319 setFlag(QGraphicsItem::ItemIsFocusable,
true);
320 setTextInteractionFlags(Qt::TextEditorInteraction);
321 setFocus(Qt::MouseFocusReason);
324 setTextInteractionFlags(Qt::NoTextInteraction);
325 setFlag(QGraphicsItem::ItemIsFocusable,
false);
346 QString new_text = toPlainText();
350 undo->setText(
tr(
"Modifier un champ texte"));
357 QTextCursor qtc = textCursor();
358 qtc.clearSelection();
The QPropertyUndoCommand class This undo command manage QProperty of a QObject. This undo command can...
virtual QUndoStack & undoStack() const
void setFont(const QFont &font)
void plainTextChanged(const QString &text)
QRectF boundingRect() const override
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *) override
void setPlainText(const QString &text)
~PartText() override
Destructeur.
void adjustItemPosition(int=0)
void colorChanged(const QColor &color)
void enableAnimation(bool animate=true)
QPropertyUndoCommand::enableAnimation True to enable animation.
void focusOutEvent(QFocusEvent *) override
QList< QPointF > mapPoints(const QRectF &, const QRectF &, const QList< QPointF > &)
void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override
QString name() const override
void setRotation(qreal angle)
void fromXml(const QDomElement &) override
QRectF sceneGeometricRect() const override
void startUserTransformation(const QRectF &) override
void setDefaultTextColor(const QColor &color)
void fontChanged(const QFont &font)
virtual void updateCurrentPartEditor() const
void keyPressEvent(QKeyEvent *) override
void focusInEvent(QFocusEvent *) override
const QDomElement toXml(QDomDocument &) const override
PartText(QETElementEditor *, QGraphicsItem *=nullptr)
void handleUserTransformation(const QRectF &, const QRectF &) override
static QFont diagramTextsFont(qreal=-1.0)
QETApp::diagramTextsFont The font to use By default the font is "sans Serif" and size 9...
void mousePressEvent(QGraphicsSceneMouseEvent *event) override
virtual ElementScene * elementScene() const
QString xmlName() const override
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override
bool isUseless() const override
void setProperty(const char *name, const QVariant &value) override
QVariant itemChange(GraphicsItemChange, const QVariant &) override