QElectroTech 0.200.1-dev
Loading...
Searching...
No Matches
parttext.h
Go to the documentation of this file.
1/*
2 Copyright 2006-2026 The QElectroTech Team
3 This file is part of QElectroTech.
4
5 QElectroTech is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 2 of the License, or
8 (at your option) any later version.
9
10 QElectroTech is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
17*/
18#ifndef PART_TEXT_H
19#define PART_TEXT_H
20#include "../../qetapp.h"
21#include "customelementpart.h"
22
23#include <QtWidgets>
24
25class TextEditor;
31class PartText : public QGraphicsTextItem, public CustomElementPart {
32 Q_OBJECT
33 Q_PROPERTY(qreal real_size READ realSize WRITE setRealSize)
34 Q_PROPERTY(QColor color READ defaultTextColor WRITE setDefaultTextColor NOTIFY colorChanged)
35 Q_PROPERTY(QString text READ toPlainText WRITE setPlainText NOTIFY plainTextChanged)
36 Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged)
37 Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment NOTIFY alignmentChanged)
38
39 signals:
40 void fontChanged(const QFont &font);
41 void colorChanged(const QColor &color);
42 void plainTextChanged(const QString &text);
43 void alignmentChanged(Qt::Alignment alignment);
44
45 // constructors, destructor
46 public:
47 PartText(QETElementEditor *, QGraphicsItem * = nullptr);
48 ~PartText() override;
49
50 private:
52
53 // methods
54 public:
55 enum { Type = UserType + 1107 };
61 int type() const override { return Type; }
62 QString name() const override { return(QObject::tr("texte", "element part name")); }
63 QString xmlName() const override { return(QString("text")); }
64 void fromXml(const QDomElement &) override;
65 const QDomElement toXml(QDomDocument &) const override;
66 void setRotation(qreal angle);
67 void mirror(qreal axis_x = 0);
68 void flip(qreal axis_y = 0);
69 bool isUseless() const override;
70 QRectF sceneGeometricRect() const override;
71 void startUserTransformation(const QRectF &) override;
72 void handleUserTransformation(const QRectF &, const QRectF &) override;
73
74 void setProperty(const char *name, const QVariant &value) override {QGraphicsTextItem::setProperty(name, value);}
75 QVariant property(const char *name) const override {return QGraphicsTextItem::property(name);}
76
77 qreal realSize() const {return real_font_size_;}
78 void setRealSize(qreal rs) {real_font_size_ = rs;}
79 void setDefaultTextColor(const QColor &color);
80 void setPlainText(const QString &text);
81 void setFont(const QFont &font);
82 void setAlignment(const Qt::Alignment &alignment);
83 Qt::Alignment alignment() const {return m_alignment;}
84
85 public slots:
86 void adjustItemPosition(int = 0);
87 void setEditable(bool);
88 void startEdition();
89 void endEdition();
90
91 protected:
92 void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
93 void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
94 void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
95 void focusInEvent(QFocusEvent *) override;
96 void focusOutEvent(QFocusEvent *) override;
97 void keyPressEvent(QKeyEvent *) override;
98 void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *) override;
99 QVariant itemChange(GraphicsItemChange, const QVariant &) override;
100 QRectF boundingRect() const override;
101
102 private:
103 QPointF margin() const;
104 void applyLineAlignment();
105 void prepareAlignment();
106 void finishAlignment();
111 QGraphicsItem *decorator_;
113 Qt::Alignment m_alignment = (Qt::AlignTop | Qt::AlignLeft);
115};
116#endif
CustomElementPart(QETElementEditor *editor)
CustomElementPart Constructor.
Definition customelementpart.h:48
Definition elementprimitivedecorator.h:42
Qt::Alignment m_alignment
Definition parttext.h:113
void startEdition()
Definition parttext.cpp:524
void mousePressEvent(QGraphicsSceneMouseEvent *event) override
Definition parttext.cpp:468
QString xmlName() const override
Definition parttext.h:63
void keyPressEvent(QKeyEvent *) override
PartText::keyPressEvent Used to handle the escape key when the event is delivered to the field,...
Definition parttext.cpp:238
void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override
Definition parttext.cpp:455
@ Type
Definition parttext.h:55
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *) override
Definition parttext.cpp:251
void endEdition()
Definition parttext.cpp:539
void setProperty(const char *name, const QVariant &value) override
Definition parttext.h:74
QRectF m_alignment_rect
Definition parttext.h:114
void fontChanged(const QFont &font)
int type() const override
Definition parttext.h:61
void setRotation(qreal angle)
Definition parttext.cpp:72
bool isUseless() const override
Definition parttext.cpp:287
void adjustItemPosition(int=0)
Definition parttext.cpp:496
QVariant property(const char *name) const override
Definition parttext.h:75
void handleUserTransformation(const QRectF &, const QRectF &) override
Definition parttext.cpp:316
void finishAlignment()
PartText::finishAlignment Call after a change of the bounding rect: moves the text so that the point ...
Definition parttext.cpp:395
void prepareAlignment()
PartText::prepareAlignment Call before a change of the bounding rect (see finishAlignment).
Definition parttext.cpp:384
void setRealSize(qreal rs)
Definition parttext.h:78
QVariant itemChange(GraphicsItemChange, const QVariant &) override
Definition parttext.cpp:263
void setAlignment(const Qt::Alignment &alignment)
PartText::setAlignment Set how this text is anchored to its position: when the content later changes,...
Definition parttext.cpp:353
void setPlainText(const QString &text)
Definition parttext.cpp:334
QString text
Definition parttext.h:35
QGraphicsItem * decorator_
Definition parttext.h:111
void plainTextChanged(const QString &text)
qreal real_font_size_
Definition parttext.h:108
void mirror(qreal axis_x=0)
Definition parttext.cpp:78
void focusInEvent(QFocusEvent *) override
PartText::focusInEvent.
Definition parttext.cpp:215
QFont font
Definition parttext.h:36
void applyLineAlignment()
PartText::applyLineAlignment Align the lines of a multi-line text relative to each other according to...
Definition parttext.cpp:369
QRectF boundingRect() const override
Definition parttext.cpp:275
void setEditable(bool)
Definition parttext.cpp:509
QString previous_text
Definition parttext.h:107
qreal realSize() const
Definition parttext.h:77
void startUserTransformation(const QRectF &) override
Definition parttext.cpp:307
PartText(QETElementEditor *, QGraphicsItem *=nullptr)
Definition parttext.cpp:33
void setDefaultTextColor(const QColor &color)
Definition parttext.cpp:327
Qt::Alignment alignment
Definition parttext.h:37
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override
Definition parttext.cpp:475
qreal saved_font_size_
Definition parttext.h:110
void setFont(const QFont &font)
Definition parttext.cpp:431
Qt::Alignment alignment() const
Definition parttext.h:83
void flip(qreal axis_y=0)
Definition parttext.cpp:94
QColor color
Definition parttext.h:34
QPointF margin() const
Definition parttext.cpp:192
void focusOutEvent(QFocusEvent *) override
PartText::focusOutEvent.
Definition parttext.cpp:226
void alignmentChanged(Qt::Alignment alignment)
qreal real_size
Definition parttext.h:33
QPointF saved_point_
Definition parttext.h:109
const QDomElement toXml(QDomDocument &) const override
Definition parttext.cpp:159
void fromXml(const QDomElement &) override
Definition parttext.cpp:115
QRectF sceneGeometricRect() const override
Definition parttext.cpp:298
QString name() const override
Definition parttext.h:62
QPointF m_origin_pos
Definition parttext.h:112
void colorChanged(const QColor &color)
Definition qetelementeditor.h:39
Definition texteditor.h:34