Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qquickpath_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QQUICKPATH_H
5#define QQUICKPATH_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <private/qtquickglobal_p.h>
19
21
22#include <qqml.h>
23
24#include <private/qqmlnullablevalue_p.h>
25#include <private/qlazilyallocated_p.h>
26#include <private/qbezier_p.h>
27#include <private/qtquickglobal_p.h>
28
29#include <QtCore/QObject>
30#include <QtCore/QHash>
31#include <QtGui/QPainterPath>
32#include <QtGui/QFont>
33
35
36class QQuickCurve;
38{
39 int index;
41 QList<QQuickCurve*> curves;
42};
43
44class Q_QUICK_EXPORT QQuickPathElement : public QObject
45{
49public:
50 QQuickPathElement(QObject *parent=nullptr) : QObject(parent) {}
52 void changed();
53};
54
55class Q_QUICK_EXPORT QQuickPathAttribute : public QQuickPathElement
56{
58
59 Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
60 Q_PROPERTY(qreal value READ value WRITE setValue NOTIFY valueChanged)
61 QML_NAMED_ELEMENT(PathAttribute)
63public:
64 QQuickPathAttribute(QObject *parent=nullptr) : QQuickPathElement(parent) {}
65
66
67 QString name() const;
68 void setName(const QString &name);
69
70 qreal value() const;
71 void setValue(qreal value);
72
76
77private:
78 QString _name;
79 qreal _value = 0;
80};
81
82class Q_QUICK_EXPORT QQuickCurve : public QQuickPathElement
83{
85
86 Q_PROPERTY(qreal x READ x WRITE setX NOTIFY xChanged)
87 Q_PROPERTY(qreal y READ y WRITE setY NOTIFY yChanged)
88 Q_PROPERTY(qreal relativeX READ relativeX WRITE setRelativeX NOTIFY relativeXChanged)
89 Q_PROPERTY(qreal relativeY READ relativeY WRITE setRelativeY NOTIFY relativeYChanged)
92public:
93 QQuickCurve(QObject *parent=nullptr) : QQuickPathElement(parent) {}
94
95 qreal x() const;
96 void setX(qreal x);
97 bool hasX();
98
99 qreal y() const;
100 void setY(qreal y);
101 bool hasY();
102
103 qreal relativeX() const;
104 void setRelativeX(qreal x);
105 bool hasRelativeX();
106
107 qreal relativeY() const;
108 void setRelativeY(qreal y);
109 bool hasRelativeY();
110
111 virtual void addToPath(QPainterPath &, const QQuickPathData &) {}
112
114 void xChanged();
115 void yChanged();
118
119private:
120 QQmlNullableValue<qreal> _x;
121 QQmlNullableValue<qreal> _y;
122 QQmlNullableValue<qreal> _relativeX;
123 QQmlNullableValue<qreal> _relativeY;
124};
125
126class Q_QUICK_EXPORT QQuickPathLine : public QQuickCurve
127{
129 QML_NAMED_ELEMENT(PathLine)
131public:
132 QQuickPathLine(QObject *parent=nullptr) : QQuickCurve(parent) {}
133
134 void addToPath(QPainterPath &path, const QQuickPathData &) override;
135};
136
137class Q_QUICK_EXPORT QQuickPathMove : public QQuickCurve
138{
140 QML_NAMED_ELEMENT(PathMove)
142public:
143 QQuickPathMove(QObject *parent=nullptr) : QQuickCurve(parent) {}
144
145 void addToPath(QPainterPath &path, const QQuickPathData &) override;
146};
147
148class Q_QUICK_EXPORT QQuickPathQuad : public QQuickCurve
149{
151
152 Q_PROPERTY(qreal controlX READ controlX WRITE setControlX NOTIFY controlXChanged)
153 Q_PROPERTY(qreal controlY READ controlY WRITE setControlY NOTIFY controlYChanged)
154 Q_PROPERTY(qreal relativeControlX READ relativeControlX WRITE setRelativeControlX NOTIFY relativeControlXChanged)
155 Q_PROPERTY(qreal relativeControlY READ relativeControlY WRITE setRelativeControlY NOTIFY relativeControlYChanged)
156
157 QML_NAMED_ELEMENT(PathQuad)
159public:
160 QQuickPathQuad(QObject *parent=nullptr) : QQuickCurve(parent) {}
161
162 qreal controlX() const;
163 void setControlX(qreal x);
164
165 qreal controlY() const;
166 void setControlY(qreal y);
167
168 qreal relativeControlX() const;
169 void setRelativeControlX(qreal x);
170 bool hasRelativeControlX();
171
172 qreal relativeControlY() const;
173 void setRelativeControlY(qreal y);
174 bool hasRelativeControlY();
175
176 void addToPath(QPainterPath &path, const QQuickPathData &) override;
177
183
184private:
185 qreal _controlX = 0;
186 qreal _controlY = 0;
187 QQmlNullableValue<qreal> _relativeControlX;
188 QQmlNullableValue<qreal> _relativeControlY;
189};
190
191class Q_QUICK_EXPORT QQuickPathCubic : public QQuickCurve
192{
194
195 Q_PROPERTY(qreal control1X READ control1X WRITE setControl1X NOTIFY control1XChanged)
196 Q_PROPERTY(qreal control1Y READ control1Y WRITE setControl1Y NOTIFY control1YChanged)
197 Q_PROPERTY(qreal control2X READ control2X WRITE setControl2X NOTIFY control2XChanged)
198 Q_PROPERTY(qreal control2Y READ control2Y WRITE setControl2Y NOTIFY control2YChanged)
199 Q_PROPERTY(qreal relativeControl1X READ relativeControl1X WRITE setRelativeControl1X NOTIFY relativeControl1XChanged)
200 Q_PROPERTY(qreal relativeControl1Y READ relativeControl1Y WRITE setRelativeControl1Y NOTIFY relativeControl1YChanged)
201 Q_PROPERTY(qreal relativeControl2X READ relativeControl2X WRITE setRelativeControl2X NOTIFY relativeControl2XChanged)
202 Q_PROPERTY(qreal relativeControl2Y READ relativeControl2Y WRITE setRelativeControl2Y NOTIFY relativeControl2YChanged)
203 QML_NAMED_ELEMENT(PathCubic)
205public:
206 QQuickPathCubic(QObject *parent=nullptr) : QQuickCurve(parent) {}
207
208 qreal control1X() const;
209 void setControl1X(qreal x);
210
211 qreal control1Y() const;
212 void setControl1Y(qreal y);
213
214 qreal control2X() const;
215 void setControl2X(qreal x);
216
217 qreal control2Y() const;
218 void setControl2Y(qreal y);
219
220 qreal relativeControl1X() const;
221 void setRelativeControl1X(qreal x);
222 bool hasRelativeControl1X();
223
224 qreal relativeControl1Y() const;
225 void setRelativeControl1Y(qreal y);
226 bool hasRelativeControl1Y();
227
228 qreal relativeControl2X() const;
229 void setRelativeControl2X(qreal x);
230 bool hasRelativeControl2X();
231
232 qreal relativeControl2Y() const;
233 void setRelativeControl2Y(qreal y);
234 bool hasRelativeControl2Y();
235
236 void addToPath(QPainterPath &path, const QQuickPathData &) override;
237
247
248private:
249 qreal _control1X = 0;
250 qreal _control1Y = 0;
251 qreal _control2X = 0;
252 qreal _control2Y = 0;
253 QQmlNullableValue<qreal> _relativeControl1X;
254 QQmlNullableValue<qreal> _relativeControl1Y;
255 QQmlNullableValue<qreal> _relativeControl2X;
256 QQmlNullableValue<qreal> _relativeControl2Y;
257};
258
259class Q_QUICK_EXPORT QQuickPathCatmullRomCurve : public QQuickCurve
260{
262 QML_NAMED_ELEMENT(PathCurve)
264public:
265 QQuickPathCatmullRomCurve(QObject *parent=nullptr) : QQuickCurve(parent) {}
266
267 void addToPath(QPainterPath &path, const QQuickPathData &) override;
268};
269
270class Q_QUICK_EXPORT QQuickPathArc : public QQuickCurve
271{
273 Q_PROPERTY(qreal radiusX READ radiusX WRITE setRadiusX NOTIFY radiusXChanged)
274 Q_PROPERTY(qreal radiusY READ radiusY WRITE setRadiusY NOTIFY radiusYChanged)
275 Q_PROPERTY(bool useLargeArc READ useLargeArc WRITE setUseLargeArc NOTIFY useLargeArcChanged)
276 Q_PROPERTY(ArcDirection direction READ direction WRITE setDirection NOTIFY directionChanged)
277 Q_PROPERTY(qreal xAxisRotation READ xAxisRotation WRITE setXAxisRotation NOTIFY xAxisRotationChanged REVISION(2, 9))
278 QML_NAMED_ELEMENT(PathArc)
280
281public:
282 QQuickPathArc(QObject *parent=nullptr)
283 : QQuickCurve(parent) {}
284
285 enum ArcDirection { Clockwise, Counterclockwise };
286 Q_ENUM(ArcDirection)
287
288 qreal radiusX() const;
289 void setRadiusX(qreal);
290
291 qreal radiusY() const;
292 void setRadiusY(qreal);
293
294 bool useLargeArc() const;
295 void setUseLargeArc(bool);
296
297 ArcDirection direction() const;
298 void setDirection(ArcDirection direction);
299
300 qreal xAxisRotation() const;
301 void setXAxisRotation(qreal rotation);
302
303 void addToPath(QPainterPath &path, const QQuickPathData &) override;
304
310 Q_REVISION(2, 9) void xAxisRotationChanged();
311
312private:
313 qreal _radiusX = 0;
314 qreal _radiusY = 0;
315 bool _useLargeArc = false;
316 ArcDirection _direction = Clockwise;
317 qreal _xAxisRotation = 0;
318};
319
320class Q_QUICK_EXPORT QQuickPathAngleArc : public QQuickCurve
321{
323 Q_PROPERTY(qreal centerX READ centerX WRITE setCenterX NOTIFY centerXChanged)
324 Q_PROPERTY(qreal centerY READ centerY WRITE setCenterY NOTIFY centerYChanged)
325 Q_PROPERTY(qreal radiusX READ radiusX WRITE setRadiusX NOTIFY radiusXChanged)
326 Q_PROPERTY(qreal radiusY READ radiusY WRITE setRadiusY NOTIFY radiusYChanged)
327 Q_PROPERTY(qreal startAngle READ startAngle WRITE setStartAngle NOTIFY startAngleChanged)
328 Q_PROPERTY(qreal sweepAngle READ sweepAngle WRITE setSweepAngle NOTIFY sweepAngleChanged)
329 Q_PROPERTY(bool moveToStart READ moveToStart WRITE setMoveToStart NOTIFY moveToStartChanged)
330
331 QML_NAMED_ELEMENT(PathAngleArc)
333
334public:
336 : QQuickCurve(parent) {}
337
338 qreal centerX() const;
339 void setCenterX(qreal);
340
341 qreal centerY() const;
342 void setCenterY(qreal);
343
344 qreal radiusX() const;
345 void setRadiusX(qreal);
346
347 qreal radiusY() const;
348 void setRadiusY(qreal);
349
350 qreal startAngle() const;
351 void setStartAngle(qreal);
352
353 qreal sweepAngle() const;
354 void setSweepAngle(qreal);
355
356 bool moveToStart() const;
357 void setMoveToStart(bool);
358
359 void addToPath(QPainterPath &path, const QQuickPathData &) override;
360
369
370private:
371 qreal _centerX = 0;
372 qreal _centerY = 0;
373 qreal _radiusX = 0;
374 qreal _radiusY = 0;
375 qreal _startAngle = 0;
376 qreal _sweepAngle = 0;
377 bool _moveToStart = true;
378};
379
380class Q_QUICK_EXPORT QQuickPathSvg : public QQuickCurve
381{
383 Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged)
384 QML_NAMED_ELEMENT(PathSvg)
386public:
387 QQuickPathSvg(QObject *parent=nullptr) : QQuickCurve(parent) {}
388
389 QString path() const;
390 void setPath(const QString &path);
391
392 void addToPath(QPainterPath &path, const QQuickPathData &) override;
393
396
397private:
398 QString _path;
399};
400
401class Q_QUICK_EXPORT QQuickPathRectangle : public QQuickCurve
402{
404
405 Q_PROPERTY(qreal width READ width WRITE setWidth NOTIFY widthChanged FINAL)
406 Q_PROPERTY(qreal height READ height WRITE setHeight NOTIFY heightChanged FINAL)
407 Q_PROPERTY(qreal strokeAdjustment READ strokeAdjustment WRITE setStrokeAdjustment NOTIFY strokeAdjustmentChanged FINAL)
408 Q_PROPERTY(qreal radius READ radius WRITE setRadius NOTIFY radiusChanged FINAL)
409 Q_PROPERTY(qreal topLeftRadius READ topLeftRadius WRITE setTopLeftRadius RESET resetTopLeftRadius NOTIFY topLeftRadiusChanged FINAL)
410 Q_PROPERTY(qreal topRightRadius READ topRightRadius WRITE setTopRightRadius NOTIFY topRightRadiusChanged RESET resetTopRightRadius FINAL)
411 Q_PROPERTY(qreal bottomLeftRadius READ bottomLeftRadius WRITE setBottomLeftRadius NOTIFY bottomLeftRadiusChanged RESET resetBottomLeftRadius FINAL)
412 Q_PROPERTY(qreal bottomRightRadius READ bottomRightRadius WRITE setBottomRightRadius NOTIFY bottomRightRadiusChanged RESET resetBottomRightRadius FINAL)
413
414 QML_NAMED_ELEMENT(PathRectangle)
416public:
417 QQuickPathRectangle(QObject *parent = nullptr) : QQuickCurve(parent) {}
418
419 qreal width() const;
420 void setWidth(qreal width);
421
422 qreal height() const;
423 void setHeight(qreal height);
424
425 qreal strokeAdjustment() const;
426 void setStrokeAdjustment(qreal newStrokeAdjustment);
427
428 qreal radius() const;
429 void setRadius(qreal newRadius);
430
431 qreal topLeftRadius() const { return cornerRadius(Qt::TopLeftCorner); }
432 void setTopLeftRadius(qreal radius) { setCornerRadius(Qt::TopLeftCorner, radius); }
433 void resetTopLeftRadius() { resetCornerRadius(Qt::TopLeftCorner); }
434
435 qreal topRightRadius() const { return cornerRadius(Qt::TopRightCorner); }
436 void setTopRightRadius(qreal radius) { setCornerRadius(Qt::TopRightCorner, radius); }
437 void resetTopRightRadius() { resetCornerRadius(Qt::TopRightCorner); }
438
439 qreal bottomLeftRadius() const { return cornerRadius(Qt::BottomLeftCorner); }
440 void setBottomLeftRadius(qreal radius) { setCornerRadius(Qt::BottomLeftCorner, radius); }
441 void resetBottomLeftRadius() { resetCornerRadius(Qt::BottomLeftCorner); }
442
443 qreal bottomRightRadius() const { return cornerRadius(Qt::BottomRightCorner); }
444 void setBottomRightRadius(qreal radius) { setCornerRadius(Qt::BottomRightCorner, radius); }
445 void resetBottomRightRadius() { resetCornerRadius(Qt::BottomRightCorner); }
446
447 qreal cornerRadius(Qt::Corner corner) const;
448 void setCornerRadius(Qt::Corner corner, qreal newCornerRadius);
449 void resetCornerRadius(Qt::Corner corner);
450
451 void addToPath(QPainterPath &path, const QQuickPathData &) override;
452
462
463private:
464 void emitCornerRadiusChanged(Qt::Corner corner);
465
466 qreal _width = 0;
467 qreal _height = 0;
468 qreal _strokeAdjustment = 0;
469 struct ExtraData
470 {
471 ExtraData() { std::fill_n(cornerRadii, 4, -1); }
472 qreal radius = 0;
473 qreal cornerRadii[4];
474 };
475 QLazilyAllocated<ExtraData> _extra;
476};
477
478class Q_QUICK_EXPORT QQuickPathPercent : public QQuickPathElement
479{
481 Q_PROPERTY(qreal value READ value WRITE setValue NOTIFY valueChanged)
482 QML_NAMED_ELEMENT(PathPercent)
484public:
485 QQuickPathPercent(QObject *parent=nullptr) : QQuickPathElement(parent) {}
486
487 qreal value() const;
488 void setValue(qreal value);
489
492
493private:
494 qreal _value = 0;
495};
496
497class Q_QUICK_EXPORT QQuickPathPolyline : public QQuickCurve
498{
500 Q_PROPERTY(QPointF start READ start NOTIFY startChanged)
501 Q_PROPERTY(QVariant path READ path WRITE setPath NOTIFY pathChanged)
502 QML_NAMED_ELEMENT(PathPolyline)
504public:
505 QQuickPathPolyline(QObject *parent=nullptr);
506
507 QVariant path() const;
508 void setPath(const QVariant &path);
509 void setPath(const QVector<QPointF> &path);
510 QPointF start() const;
511 void addToPath(QPainterPath &path, const QQuickPathData &data) override;
512
514 void pathChanged();
515 void startChanged();
516
517private:
518 QVector<QPointF> m_path;
519};
520
521class Q_QUICK_EXPORT QQuickPathMultiline : public QQuickCurve
522{
524 Q_PROPERTY(QPointF start READ start NOTIFY startChanged)
525 Q_PROPERTY(QVariant paths READ paths WRITE setPaths NOTIFY pathsChanged)
526 QML_NAMED_ELEMENT(PathMultiline)
528public:
529 QQuickPathMultiline(QObject *parent=nullptr);
530
531 QVariant paths() const;
532 void setPaths(const QVariant &paths);
533 void setPaths(const QVector<QVector<QPointF>> &paths);
534 QPointF start() const;
535 void addToPath(QPainterPath &path, const QQuickPathData &) override;
536
538 void pathsChanged();
539 void startChanged();
540
541private:
542 QPointF absolute(const QPointF &relative) const;
543
544 QVector<QVector<QPointF>> m_paths;
545};
546
557
559class Q_QUICK_EXPORT QQuickPath : public QObject, public QQmlParserStatus
560{
562
564 Q_PROPERTY(QQmlListProperty<QQuickPathElement> pathElements READ pathElements)
565 Q_PROPERTY(qreal startX READ startX WRITE setStartX NOTIFY startXChanged)
566 Q_PROPERTY(qreal startY READ startY WRITE setStartY NOTIFY startYChanged)
567 Q_PROPERTY(bool closed READ isClosed NOTIFY changed)
568 Q_PROPERTY(bool simplify READ simplify WRITE setSimplify NOTIFY simplifyChanged REVISION(6, 6) FINAL)
569 Q_PROPERTY(QSizeF scale READ scale WRITE setScale NOTIFY scaleChanged REVISION(2, 14))
570 Q_CLASSINFO("DefaultProperty", "pathElements")
573public:
574 QQuickPath(QObject *parent=nullptr);
575 ~QQuickPath() override;
576
578
579 qreal startX() const;
580 void setStartX(qreal x);
581 bool hasStartX() const;
582
583 qreal startY() const;
584 void setStartY(qreal y);
585 bool hasStartY() const;
586
587 bool isClosed() const;
588
589 QPainterPath path() const;
590 QStringList attributes() const;
591 qreal attributeAt(const QString &, qreal) const;
592 Q_REVISION(2, 14) Q_INVOKABLE QPointF pointAtPercent(qreal t) const;
593 QPointF sequentialPointAt(qreal p, qreal *angle = nullptr) const;
594 void invalidateSequentialHistory() const;
595
596 QSizeF scale() const;
597 void setScale(const QSizeF &scale);
598
599 bool simplify() const;
600 void setSimplify(bool s);
601
603 void changed();
604 void startXChanged();
605 void startYChanged();
606 Q_REVISION(6, 6) void simplifyChanged();
607 Q_REVISION(2, 14) void scaleChanged();
608
609protected:
610 QQuickPath(QQuickPathPrivate &dd, QObject *parent = nullptr);
611 void componentComplete() override;
612 void classBegin() override;
613 void disconnectPathElements();
614 void connectPathElements();
615 void gatherAttributes();
616
617 // pathElements property
619 static void pathElements_append(QQmlListProperty<QQuickPathElement> *, QQuickPathElement *);
620 static qsizetype pathElements_count(QQmlListProperty<QQuickPathElement> *);
621 static void pathElements_clear(QQmlListProperty<QQuickPathElement> *);
622
624 void processPath();
625
626private:
627 struct AttributePoint {
628 AttributePoint() {}
629 AttributePoint(const AttributePoint &other)
630 : percent(other.percent), scale(other.scale), origpercent(other.origpercent), values(other.values) {}
631 AttributePoint &operator=(const AttributePoint &other) {
632 percent = other.percent; scale = other.scale; origpercent = other.origpercent; values = other.values; return *this;
633 }
634 qreal percent = 0; //massaged percent along the painter path
635 qreal scale = 1;
636 qreal origpercent = 0; //'real' percent along the painter path
637 QHash<QString, qreal> values;
638 };
639
640 void interpolate(int idx, const QString &name, qreal value);
641 void endpoint(const QString &name);
642 void createPointCache() const;
643
644 static void interpolate(QList<AttributePoint> &points, int idx, const QString &name, qreal value);
645 static void endpoint(QList<AttributePoint> &attributePoints, const QString &name);
646 static QPointF forwardsPointAt(const QPainterPath &path, const qreal &pathLength, const QList<AttributePoint> &attributePoints, QQuickCachedBezier &prevBez, qreal p, qreal *angle = nullptr);
647 static QPointF backwardsPointAt(const QPainterPath &path, const qreal &pathLength, const QList<AttributePoint> &attributePoints, QQuickCachedBezier &prevBez, qreal p, qreal *angle = nullptr);
648
649private:
650 Q_DISABLE_COPY(QQuickPath)
651 Q_DECLARE_PRIVATE(QQuickPath)
652 friend class QQuickPathAnimationUpdater;
653
654public:
655 QPainterPath createPath(const QPointF &startPoint, const QPointF &endPoint, const QStringList &attributes, qreal &pathLength, QList<AttributePoint> &attributePoints, bool *closed = nullptr);
656 QPainterPath createShapePath(const QPointF &startPoint, const QPointF &endPoint, qreal &pathLength, bool *closed = nullptr);
657 static QPointF sequentialPointAt(const QPainterPath &path, const qreal &pathLength, const QList<AttributePoint> &attributePoints, QQuickCachedBezier &prevBez, qreal p, qreal *angle = nullptr);
658};
659
660class Q_QUICK_EXPORT QQuickPathText : public QQuickPathElement
661{
663 Q_PROPERTY(qreal x READ x WRITE setX NOTIFY xChanged)
664 Q_PROPERTY(qreal y READ y WRITE setY NOTIFY yChanged)
665 Q_PROPERTY(qreal width READ width NOTIFY changed)
666 Q_PROPERTY(qreal height READ height NOTIFY changed)
668 Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged)
669 QML_NAMED_ELEMENT(PathText)
671public:
681
682 void addToPath(QPainterPath &path);
683
684 qreal x() const { return _x; }
685 qreal y() const { return _y; }
686 QString text() const { return _text; }
687 QFont font() const { return _font; }
688
690 {
691 if (qFuzzyCompare(_x, x))
692 return;
693
694 _x = x;
695 Q_EMIT xChanged();
696 }
697
699 {
700 if (qFuzzyCompare(_y, y))
701 return;
702
703 _y = y;
704 Q_EMIT yChanged();
705 }
706
707 void setText(const QString &text)
708 {
709 if (text == _text)
710 return;
711
712 _text = text;
714 }
715
716 void setFont(const QFont &font)
717 {
718 if (font == _font)
719 return;
720
721 _font = font;
722 Q_EMIT fontChanged();
723 }
724
725 qreal width() const
726 {
727 updatePath();
728 return _path.boundingRect().width();
729 }
730
731 qreal height() const
732 {
733 updatePath();
734 return _path.boundingRect().height();
735 }
736
738 void xChanged();
739 void yChanged();
742
743private Q_SLOTS:
744 void invalidate()
745 {
746 _path.clear();
747 }
748
749private:
750 void updatePath() const;
751
752 QString _text;
753 qreal _x = qreal(0.0);
754 qreal _y = qreal(0.0);
755 QFont _font;
756
757 mutable QPainterPath _path;
758};
759
761
762#endif // QQUICKPATH_H
\reentrant
Definition qfont.h:22
Definition qlist.h:76
\inmodule QtCore
Definition qobject.h:103
\inmodule QtGui
\inmodule QtCore\reentrant
Definition qpoint.h:217
The QQmlListProperty class allows applications to expose list-like properties of QObject-derived clas...
Definition qqmllist.h:24
The QQmlParserStatus class provides updates on the QML parser state.
void relativeXChanged()
virtual void addToPath(QPainterPath &, const QQuickPathData &)
void xChanged()
void yChanged()
void relativeYChanged()
void directionChanged()
void radiusXChanged()
void radiusYChanged()
void useLargeArcChanged()
Q_REVISION(2, 9) void xAxisRotationChanged()
QQuickPathCatmullRomCurve(QObject *parent=nullptr)
void control1YChanged()
void relativeControl1XChanged()
void control2XChanged()
void control2YChanged()
void control1XChanged()
void relativeControl2YChanged()
void relativeControl1YChanged()
void relativeControl2XChanged()
QQuickPathElement(QObject *parent=nullptr)
QQuickPathLine(QObject *parent=nullptr)
QQuickPathMove(QObject *parent=nullptr)
void controlXChanged()
void relativeControlYChanged()
void controlYChanged()
void relativeControlXChanged()
void setTopRightRadius(qreal radius)
void setBottomRightRadius(qreal radius)
void bottomLeftRadiusChanged()
qreal bottomRightRadius() const
void strokeAdjustmentChanged()
void topRightRadiusChanged()
void bottomRightRadiusChanged()
void setTopLeftRadius(qreal radius)
void setBottomLeftRadius(qreal radius)
qreal bottomLeftRadius() const
qreal topLeftRadius() const
qreal topRightRadius() const
void pathChanged()
qreal y() const
QFont font() const
void textChanged()
qreal width() const
qreal height() const
void setText(const QString &text)
void setFont(const QFont &font)
QString text() const
void fontChanged()
void setY(qreal y)
void setX(qreal x)
qreal x() const
\inmodule QtCore
Definition qsize.h:208
\inmodule QtCore
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
\inmodule QtCore
Definition qvariant.h:65
QString text
void textChanged(const QString &newText)
employee setName("Richard Schmit")
direction
Combined button and popup list for selecting options.
@ BottomLeftCorner
@ TopRightCorner
@ TopLeftCorner
@ BottomRightCorner
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
bool qFuzzyCompare(qfloat16 p1, qfloat16 p2) noexcept
Definition qfloat16.h:333
static qreal interpolate(const QPair< QGraphicsAnchorLayoutPrivate::Interval, qreal > &factor, qreal min, qreal minPref, qreal pref, qreal maxPref, qreal max)
GLenum GLsizei GLsizei GLint * values
[15]
GLint GLint GLint GLint GLint x
[0]
GLint GLsizei GLsizei height
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLint GLsizei width
GLsizei const GLuint * paths
GLfloat angle
GLuint start
GLuint name
GLint y
GLfixed GLfixed GLint GLint GLfixed points
GLdouble s
[6]
Definition qopenglext.h:235
GLdouble GLdouble t
Definition qopenglext.h:243
GLsizei const GLchar *const * path
GLfloat GLfloat p
[1]
GLenum GLenum GLenum GLenum GLenum scale
#define QML_ANONYMOUS
#define QML_NAMED_ELEMENT(NAME)
#define QML_ADDED_IN_VERSION(MAJOR, MINOR)
#define QT_REQUIRE_CONFIG(feature)
#define Q_ENUM(x)
#define Q_PROPERTY(...)
#define Q_OBJECT
#define Q_REVISION(...)
#define Q_CLASSINFO(name, value)
#define Q_EMIT
#define Q_INVOKABLE
#define Q_INTERFACES(x)
#define Q_SLOTS
#define Q_SIGNALS
ptrdiff_t qsizetype
Definition qtypes.h:165
double qreal
Definition qtypes.h:187
settings setValue("DataPump/bgcolor", color)
connect(quitButton, &QPushButton::clicked, &app, &QCoreApplication::quit, Qt::QueuedConnection)
p setX(p.x()+1)
QSharedPointer< T > other(t)
[5]
insertRed setText("insert red text")
QList< QQuickCurve * > curves