|
| QQuickShapePrivate () |
| Renders a path.
|
| ~QQuickShapePrivate () |
void | init () |
QQuickShape::RendererType | selectRendererType () |
void | createRenderer () |
QSGNode * | createNode () |
void | sync () |
void | _q_shapePathChanged () |
void | setStatus (QQuickShape::Status newStatus) |
void | handleSceneChange (QQuickWindow *w) |
qreal | getImplicitWidth () const override |
qreal | getImplicitHeight () const override |
| QQuickItemPrivate () |
| ~QQuickItemPrivate () override |
void | init (QQuickItem *parent) |
QQmlListProperty< QObject > | data () |
QQmlListProperty< QObject > | resources () |
QQmlListProperty< QQuickItem > | children () |
QQmlListProperty< QQuickItem > | visibleChildren () |
QQmlListProperty< QQuickState > | states () |
QQmlListProperty< QQuickTransition > | transitions () |
QString | state () const |
void | setState (const QString &) |
QQuickAnchorLine | left () const |
QQuickAnchorLine | right () const |
QQuickAnchorLine | horizontalCenter () const |
QQuickAnchorLine | top () const |
QQuickAnchorLine | bottom () const |
QQuickAnchorLine | verticalCenter () const |
QQuickAnchorLine | baseline () const |
void | localizedTouchEvent (const QTouchEvent *event, bool isFiltering, QMutableTouchEvent *localized) |
bool | hasPointerHandlers () const |
bool | hasEnabledHoverHandlers () const |
virtual void | addPointerHandler (QQuickPointerHandler *h) |
virtual void | removePointerHandler (QQuickPointerHandler *h) |
QObject * | setContextMenu (QObject *menu) |
void | _q_resourceObjectDeleted (QObject *) |
quint64 | _q_createJSWrapper (QQmlV4ExecutionEnginePtr engine) |
template<typename Fn, typename ... Args> |
void | notifyChangeListeners (QQuickItemPrivate::ChangeTypes changeTypes, Fn &&function, Args &&...args) |
virtual void | registerAsContainmentMask (QQuickItem *, bool) |
QQuickAnchors * | anchors () const |
| \qmlpropertygroup QtQuick::Item::anchors \qmlproperty AnchorLine QtQuick::Item::anchors.top \qmlproperty AnchorLine QtQuick::Item::anchors.bottom \qmlproperty AnchorLine QtQuick::Item::anchors.left \qmlproperty AnchorLine QtQuick::Item::anchors.right \qmlproperty AnchorLine QtQuick::Item::anchors.horizontalCenter \qmlproperty AnchorLine QtQuick::Item::anchors.verticalCenter \qmlproperty AnchorLine QtQuick::Item::anchors.baseline
|
Qt::MouseButtons | acceptedMouseButtons () const |
void | addItemChangeListener (QQuickItemChangeListener *listener, ChangeTypes types) |
void | updateOrAddItemChangeListener (QQuickItemChangeListener *listener, ChangeTypes types) |
void | removeItemChangeListener (QQuickItemChangeListener *, ChangeTypes types) |
void | updateOrAddGeometryChangeListener (QQuickItemChangeListener *listener, QQuickGeometryChange types) |
void | updateOrRemoveGeometryChangeListener (QQuickItemChangeListener *listener, QQuickGeometryChange types) |
QQuickStateGroup * | _states () |
QQuickItem::TransformOrigin | origin () const |
QString | dirtyToString () const |
void | dirty (DirtyType) |
void | addToDirtyList () |
void | removeFromDirtyList () |
void | setCulled (bool) |
QSGContext * | sceneGraphContext () const |
QSGRenderContext * | sceneGraphRenderContext () const |
QList< QQuickItem * > | paintOrderChildItems () const |
void | addChild (QQuickItem *) |
void | removeChild (QQuickItem *) |
void | siblingOrderChanged () |
void | markSortedChildrenDirty (QQuickItem *child) |
void | refWindow (QQuickWindow *) |
void | derefWindow () |
qreal | effectiveDevicePixelRatio () const |
void | updateSubFocusItem (QQuickItem *scope, bool focus) |
| Clears all sub focus items from scope.
|
bool | setFocusIfNeeded (QEvent::Type) |
Qt::FocusReason | lastFocusChangeReason () const |
virtual bool | setLastFocusChangeReason (Qt::FocusReason reason) |
QTransform | windowToItemTransform () const |
| Returns a transform that maps points from window space into item space.
|
QTransform | itemToWindowTransform () const |
| Returns a transform that maps points from item space into window space.
|
void | itemToParentTransform (QTransform *) const |
| Modifies t with this item's local transform relative to its parent.
|
void | setX (qreal x) |
void | xChanged () |
| Q_OBJECT_COMPAT_PROPERTY (QQuickItemPrivate, qreal, x, &QQuickItemPrivate::setX, &QQuickItemPrivate::xChanged) |
void | setY (qreal y) |
void | yChanged () |
| Q_OBJECT_COMPAT_PROPERTY (QQuickItemPrivate, qreal, y, &QQuickItemPrivate::setY, &QQuickItemPrivate::yChanged) |
void | setWidth (qreal width) |
void | widthChanged () |
| Q_OBJECT_COMPAT_PROPERTY (QQuickItemPrivate, qreal, width, &QQuickItemPrivate::setWidth, &QQuickItemPrivate::widthChanged) |
void | setHeight (qreal height) |
void | heightChanged () |
| Q_OBJECT_COMPAT_PROPERTY (QQuickItemPrivate, qreal, height, &QQuickItemPrivate::setHeight, &QQuickItemPrivate::heightChanged) |
bool | widthValid () const |
bool | heightValid () const |
qreal | z () const |
qreal | scale () const |
qreal | rotation () const |
qreal | opacity () const |
void | setAccessible () |
virtual void | implicitWidthChanged () |
virtual void | implicitHeightChanged () |
void | setImplicitAntialiasing (bool antialiasing) |
void | resolveLayoutMirror () |
void | setImplicitLayoutMirror (bool mirror, bool inherit) |
void | setLayoutMirror (bool mirror) |
bool | isMirrored () const |
void | emitChildrenRectChanged (const QRectF &rect) |
QPointF | computeTransformOrigin () const |
virtual bool | transformChanged (QQuickItem *transformedItem) |
QPointF | adjustedPosForTransform (const QPointF ¢roid, const QPointF &startPos, const QVector2D &activeTranslatation, qreal startScale, qreal activeScale, qreal startRotation, qreal activeRotation) |
QQuickDeliveryAgent * | deliveryAgent () |
QQuickDeliveryAgentPrivate * | deliveryAgentPrivate () |
QQuickDeliveryAgent * | ensureSubsceneDeliveryAgent () |
void | deliverKeyEvent (QKeyEvent *) |
bool | filterKeyEvent (QKeyEvent *, bool post) |
void | deliverShortcutOverrideEvent (QKeyEvent *) |
void | deliverPointerEvent (QEvent *) |
bool | anyPointerHandlerWants (const QPointerEvent *event, const QEventPoint &point) const |
virtual bool | handlePointerEvent (QPointerEvent *, bool avoidGrabbers=false) |
virtual void | setVisible (bool visible) |
bool | isTransparentForPositioner () const |
void | setTransparentForPositioner (bool trans) |
bool | calcEffectiveVisible () const |
bool | setEffectiveVisibleRecur (bool) |
bool | calcEffectiveEnable () const |
void | setEffectiveEnableRecur (QQuickItem *scope, bool) |
QSGTransformNode * | itemNode () |
QSGNode * | childContainerNode () |
QSGOpacityNode * | opacityNode () const |
QQuickDefaultClipNode * | clipNode () const |
QSGRootNode * | rootNode () const |
virtual QSGTransformNode * | createTransformNode () |
void | refFromEffectItem (bool hide) |
void | recursiveRefFromEffectItem (int refs) |
void | derefFromEffectItem (bool unhide) |
void | itemChange (QQuickItem::ItemChange, const QQuickItem::ItemChangeData &) |
void | enableSubtreeChangeNotificationsForParentHierachy () |
virtual void | mirrorChange () |
void | setHasCursorInChild (bool hasCursor) |
void | setHasHoverInChild (bool hasHover) |
virtual void | updatePolish () |
virtual void | dumpItemTree (int indent) const |
QLayoutPolicy | sizePolicy () const |
void | setSizePolicy (const QLayoutPolicy::Policy &horizontalPolicy, const QLayoutPolicy::Policy &verticalPolicy) |
void | ensureExtraData () |
void | setObjectNameWithoutBindings (const QString &name) |
| QObjectPrivate (decltype(QObjectPrivateVersion) version=QObjectPrivateVersion) |
virtual | ~QObjectPrivate () |
void | deleteChildren () |
void | clearBindingStorage () |
void | setParent_helper (QObject *) |
void | moveToThread_helper () |
void | setThreadData_helper (QThreadData *currentData, QThreadData *targetData, QBindingStatus *status) |
QObjectList | receiverList (const char *signal) const |
void | ensureConnectionData () |
void | addConnection (int signal, Connection *c) |
int | signalIndex (const char *signalName, const QMetaObject **meta=nullptr) const |
bool | isSignalConnected (uint signalIdx, bool checkDeclarative=true) const |
bool | maybeSignalConnected (uint signalIndex) const |
bool | isDeclarativeSignalConnected (uint signalIdx) const |
void | connectNotify (const QMetaMethod &signal) |
void | disconnectNotify (const QMetaMethod &signal) |
void | reinitBindingStorageAfterThreadMove () |
virtual std::string | flagsForDumping () const |
virtual void | writeToDebugStream (QDebug &) const |
QtPrivate::QPropertyAdaptorSlotObject * | getPropertyAdaptorSlotObject (const QMetaProperty &property) |
| QObjectData ()=default |
virtual | ~QObjectData ()=0 |
const QMetaObject * | dynamicMetaObject () const |
virtual | ~QQuickPaletteProviderPrivateBase ()=default |
virtual QQuickPalette * | palette () const |
virtual void | setPalette (QQuickPalette *p) |
virtual void | resetPalette () |
virtual bool | providesPalette () const |
QPalette | defaultPalette () const override |
QPalette | parentPalette (const QPalette &fallbackPalette) const override |
void | inheritPalette (const QPalette &parentPalette) |
virtual void | updateChildrenPalettes (const QPalette &parentPalette) |
virtual | ~QQuickAbstractPaletteProvider ()=default |
|
static QQuickShapePrivate * | get (QQuickShape *item) |
static void | asyncShapeReady (void *data) |
static QQuickItemPrivate * | get (QQuickItem *item) |
static const QQuickItemPrivate * | get (const QQuickItem *item) |
static void | data_append (QQmlListProperty< QObject > *, QObject *) |
static qsizetype | data_count (QQmlListProperty< QObject > *) |
| \qmlproperty list<QtObject> QtQuick::Item::data \qmldefault
|
static QObject * | data_at (QQmlListProperty< QObject > *, qsizetype) |
static void | data_clear (QQmlListProperty< QObject > *) |
static void | data_removeLast (QQmlListProperty< QObject > *) |
static QObject * | resources_at (QQmlListProperty< QObject > *, qsizetype) |
static void | resources_append (QQmlListProperty< QObject > *, QObject *) |
static qsizetype | resources_count (QQmlListProperty< QObject > *) |
static void | resources_clear (QQmlListProperty< QObject > *) |
static void | resources_removeLast (QQmlListProperty< QObject > *) |
static void | children_append (QQmlListProperty< QQuickItem > *, QQuickItem *) |
static qsizetype | children_count (QQmlListProperty< QQuickItem > *) |
static QQuickItem * | children_at (QQmlListProperty< QQuickItem > *, qsizetype) |
static void | children_clear (QQmlListProperty< QQuickItem > *) |
static void | children_removeLast (QQmlListProperty< QQuickItem > *) |
static qsizetype | visibleChildren_count (QQmlListProperty< QQuickItem > *prop) |
static QQuickItem * | visibleChildren_at (QQmlListProperty< QQuickItem > *prop, qsizetype index) |
static qsizetype | transform_count (QQmlListProperty< QQuickTransform > *list) |
static void | transform_append (QQmlListProperty< QQuickTransform > *list, QQuickTransform *) |
static QQuickTransform * | transform_at (QQmlListProperty< QQuickTransform > *list, qsizetype) |
static void | transform_clear (QQmlListProperty< QQuickTransform > *list) |
static bool | focusNextPrev (QQuickItem *item, bool forward) |
| QQuickItemPrivate::focusNextPrev focuses the next/prev item in the tab-focus-chain.
|
static QQuickItem * | nextTabChildItem (const QQuickItem *item, int start) |
static QQuickItem * | prevTabChildItem (const QQuickItem *item, int start) |
static QQuickItem * | nextPrevItemInTabFocusChain (QQuickItem *item, bool forward, bool wrap=true) |
static bool | canAcceptTabFocus (QQuickItem *item) |
static bool | removeConnection (Connection *c) |
static QObjectPrivate * | get (QObject *o) |
static const QObjectPrivate * | get (const QObject *o) |
template<typename Func1, typename Func2> |
static QMetaObject::Connection | connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiverPrivate, Func2 slot, Qt::ConnectionType type=Qt::AutoConnection) |
template<typename Func1, typename Func2> |
static bool | disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiverPrivate, Func2 slot) |
static QMetaObject::Connection | connectImpl (const QObject *sender, int signal_index, const QObject *receiver, void **slot, QtPrivate::QSlotObjectBase *slotObj, int type, const int *types, const QMetaObject *senderMetaObject) |
static QMetaObject::Connection | connect (const QObject *sender, int signal_index, QtPrivate::QSlotObjectBase *slotObj, Qt::ConnectionType type) |
static QMetaObject::Connection | connect (const QObject *sender, int signal_index, const QObject *receiver, QtPrivate::QSlotObjectBase *slotObj, Qt::ConnectionType type) |
static bool | disconnect (const QObject *sender, int signal_index, void **slot) |
static bool | disconnect (const QObject *sender, int signal_index, const QObject *receiver, void **slot) |
|
enum | ChangeType {
Geometry = 0x01
, SiblingOrder = 0x02
, Visibility = 0x04
, Opacity = 0x08
,
Destroyed = 0x10
, Parent = 0x20
, Children = 0x40
, Rotation = 0x80
,
ImplicitWidth = 0x100
, ImplicitHeight = 0x200
, Enabled = 0x400
, Focus = 0x800
,
Scale = 0x1000
, Matrix = 0x2000
, AllChanges = 0xFFFFFFFF
} |
enum | ExtraDataTag { NoTag = 0x1
, LeftMouseButtonAccepted = 0x2
} |
enum | DirtyType {
TransformOrigin = 0x00000001
, Transform = 0x00000002
, BasicTransform = 0x00000004
, Position = 0x00000008
,
Size = 0x00000010
, ZValue = 0x00000020
, Content = 0x00000040
, Smooth = 0x00000080
,
OpacityValue = 0x00000100
, ChildrenChanged = 0x00000200
, ChildrenStackingChanged = 0x00000400
, ParentChanged = 0x00000800
,
Clip = 0x00001000
, Window = 0x00002000
, EffectReference = 0x00008000
, Visible = 0x00010000
,
HideReference = 0x00020000
, Antialiasing = 0x00040000
, TransformUpdateMask
, ComplexTransformUpdateMask = Transform | Window
,
ContentUpdateMask = Size | Content | Smooth | Window | Antialiasing
, ChildrenUpdateMask = ChildrenChanged | ChildrenStackingChanged | EffectReference | Window
} |
typedef void(* | StaticMetaCallFunction) (QObject *, QMetaObject::Call, int, void **) |
using | ConnectionDataPointer = QExplicitlySharedDataPointer<ConnectionData> |
void | setCurrentColorGroup () |
Definition at line 146 of file qquickshape_p_p.h.
QQuickShapePrivate::QQuickShapePrivate |
( |
| ) |
|
Renders a path.
\qmltype Shape
! \nativetype QQuickShape \inqmlmodule QtQuick.Shapes
\inherits Item
- Since
- 5.10
Renders a path by triangulating geometry from a QPainterPath.
This approach is different from rendering shapes via QQuickPaintedItem or the 2D Canvas because the path never gets rasterized in software. Therefore Shape is suitable for creating shapes spreading over larger areas of the screen, avoiding the performance penalty for texture uploads or framebuffer blits. In addition, the declarative API allows manipulating, binding to, and even animating the path element properties like starting and ending position, the control points, and so on.
The types for specifying path elements are shared between \l PathView and Shape. However, not all Shape implementations support all path element types, while some may not make sense for PathView. Shape's currently supported subset is: PathMove, PathLine, PathQuad, PathCubic, PathArc, PathText and PathSvg.
See \l Path for a detailed overview of the supported path elements.
\qml Shape { width: 200 height: 150 anchors.centerIn: parent ShapePath { strokeWidth: 4 strokeColor: "red" fillGradient: LinearGradient { x1: 20; y1: 20 x2: 180; y2: 130 GradientStop { position: 0; color: "blue" } GradientStop { position: 0.2; color: "green" } GradientStop { position: 0.4; color: "red" } GradientStop { position: 0.6; color: "yellow" } GradientStop { position: 1; color: "cyan" } } strokeStyle: ShapePath.DashLine dashPattern: [ 1, 4 ] startX: 20; startY: 20 PathLine { x: 180; y: 130 } PathLine { x: 20; y: 130 } PathLine { x: 20; y: 20 } } } \endqml
Like \l Item, Shape also allows any visual or non-visual objects to be declared as children. ShapePath objects are handled specially. This is useful since it allows adding visual items, like \l Rectangle or \l Image, and non-visual objects, like \l Timer directly as children of Shape.
The following list summarizes the available Shape rendering approaches:
\list
- When Qt Quick is running with the default, hardware-accelerated backend (RHI), the generic shape renderer will be used. This converts the shapes into triangles which are passed to the renderer.
- The OpenVG backend is not currently supported.
\endlist
When using Shape, it is important to be aware of potential performance implications:
\list
- When the application is running with the generic, triangulation-based Shape implementation, the geometry generation happens entirely on the CPU. This is potentially expensive. Changing the set of path elements, changing the properties of these elements, or changing certain properties of the Shape itself all lead to retriangulation of the affected paths on every change. Therefore, applying animation to such properties can affect performance on less powerful systems.
- However, the data-driven, declarative nature of the Shape API often means better cacheability for the underlying CPU and GPU resources. A property change in one ShapePath will only lead to reprocessing the affected ShapePath, leaving other parts of the Shape unchanged. Therefore, a frequently changing property can still result in a lower overall system load than with imperative painting approaches (for example, QPainter).
- At the same time, attention must be paid to the number of Shape elements in the scene. The way such a Shape item is represented in the scene graph is different from an ordinary geometry-based item, and incurs a certain cost when it comes to OpenGL state changes.
- As a general rule, scenes should avoid using separate Shape items when it is not absolutely necessary. Prefer using one Shape item with multiple ShapePath elements over multiple Shape items.
\endlist
- See also
- {Qt Quick Examples - Shapes}, {Weather Forecast Example}, Path, PathMove, PathLine, PathQuad, PathCubic, PathArc, PathSvg
Definition at line 880 of file qquickshape.cpp.