Item QML Type

Ein grundlegender visueller QML-Typ. Mehr...

Eigenschaften

Methoden

Detaillierte Beschreibung

Der Typ Item ist der Basistyp für alle visuellen Elemente in Qt Quick.

Alle visuellen Elemente in Qt Quick erben von Item. Obwohl ein Item-Objekt kein visuelles Erscheinungsbild hat, definiert es alle Attribute, die allen visuellen Elementen gemeinsam sind, wie z. B. x- und y-Position, Breite und Höhe, Verankerung und Unterstützung der Tastenbedienung.

Der Typ Item kann nützlich sein, um mehrere Elemente unter einem einzigen visuellen Stammelement zu gruppieren. Zum Beispiel:

import QtQuick 2.0

Item {
    Image {
        source: "tile.png"
    }
    Image {
        x: 80
        width: 100
        height: 100
        source: "tile.png"
    }
    Image {
        x: 190
        width: 100
        height: 100
        fillMode: Image.Tile
        source: "tile.png"
    }
}

Ereignisbehandlung

Alle Item-basierten visuellen Typen können Input Handler verwenden, um eingehende Eingabeereignisse (Unterklassen von QInputEvent), wie Maus-, Touch- und Tastenereignisse, zu behandeln. Dies ist der bevorzugte deklarative Weg, um Ereignisse zu behandeln.

Eine alternative Möglichkeit zur Behandlung von Berührungsereignissen ist die Unterklasse QQuickItem, der Aufruf von setAcceptTouchEvents() im Konstruktor und die Überschreibung von touchEvent(). Accept des gesamten Ereignisses, um die Zustellung an darunter liegende Elemente zu stoppen und ausschließlich alle Berührungspunkte des Ereignisses zu erfassen. Verwenden Sie QPointerEvent::setExclusiveGrabber(), um nur bestimmte Berührungspunkte zu erfassen und die Weiterleitung des Ereignisses zu ermöglichen.

Ebenso kann eine QQuickItem -Unterklasse setAcceptedMouseButtons() aufrufen, um sich für den Empfang von Maustastenereignissen zu registrieren, setAcceptHoverEvents(), um Hover-Ereignisse zu empfangen (Mausbewegungen, während keine Taste gedrückt ist), und die virtuellen Funktionen mousePressEvent(), mouseMoveEvent() und mouseReleaseEvent() überschreiben. Diese können auch das Ereignis akzeptieren, um eine weitere Zustellung zu verhindern und gleichzeitig ein implizites Greifen zu erhalten; oder explizit grab die einzelne QEventPoint, die die QMouseEvent trägt.

Die Handhabung von Tasten ist für alle Item-basierten visuellen Typen über die Keys attached property verfügbar. Die Eigenschaft Keys attached bietet grundlegende Signale wie pressed und released sowie Signale für bestimmte Tasten wie spacePressed. Das folgende Beispiel weist dem Element den Tastaturfokus zu und behandelt die linke Taste über den allgemeinen Handler onPressed und die Return-Taste über den Handler onReturnPressed:

import QtQuick 2.0

Item {
    focus: true
    Keys.onPressed: (event)=> {
        if (event.key == Qt.Key_Left) {
            console.log("move left");
            event.accepted = true;
        }
    }
    Keys.onReturnPressed: console.log("Pressed return");
}

Eine ausführliche Dokumentation finden Sie in der angehängten Eigenschaft Keys.

Layout-Spiegelung

Die Layouts der Elemente können mit der Eigenschaft LayoutMirroring attached gespiegelt werden. Dies bewirkt, dass anchors horizontal umgekehrt wird, und bewirkt auch, dass Elemente, die ihre Kinder (wie ListView oder Row) anordnen oder positionieren, die Richtung ihrer Layouts horizontal umkehren.

Siehe LayoutMirroring für weitere Einzelheiten.

Element-Ebenen

Ein Element wird normalerweise direkt in das Fenster gerendert, zu dem es gehört. Durch die Einstellung layer.enabled ist es jedoch möglich, das Element und seinen gesamten Unterbaum in eine Offscreen-Oberfläche zu delegieren. Nur die Offscreen-Oberfläche, eine Textur, wird dann in das Fenster gezeichnet.

Wenn eine andere Texturgröße als die des Elements gewünscht wird, ist dies mit layer.textureSize möglich. Um nur einen Ausschnitt des Objekts in die Textur zu übertragen, verwenden Sie layer.sourceRect. Es ist auch möglich, layer.sourceRect so zu spezifizieren, dass die Textur über die Grenzen des Objekts hinausgeht. In diesem Fall wird der Außenbereich mit transparenten Pixeln aufgefüllt.

Das Element verwendet lineare Interpolation für die Skalierung, wenn layer.smooth auf true gesetzt ist, und verwendet Mipmap für Downsampling, wenn layer.mipmap auf true gesetzt ist. Mipmapping kann die visuelle Qualität von herunterskalierten Objekten verbessern. Für Mipmapping von einzelnen Bildelementen bevorzugen Sie Image::mipmap.

Ebenendeckkraft vs. Objektdeckkraft

Wenn Sie opacity auf eine Elementhierarchie anwenden, wird die Deckkraft auf jedes Element einzeln angewendet. Dies kann zu unerwünschten visuellen Ergebnissen führen, wenn die Deckkraft auf einen Teilbaum angewendet wird. Betrachten Sie das folgende Beispiel:

Deckkraft für nicht geschichtete Elemente
Item {
    id: nonLayered

    opacity: 0.5

    width: 100
    height: 100

    Rectangle { width: 80; height: 80; border.width: 1 }
    Rectangle { x: 20; y: 20; width: 80; height: 80; border.width: 1 }
}

Eine Ebene wird so gerendert, dass die Deckkraft des Stammelements 1 ist, und dann wird die Deckkraft des Stammelements auf die Textur angewendet, wenn sie gezeichnet wird. Das bedeutet, dass die Überblendung einer großen Elementhierarchie von transparent zu opak oder umgekehrt ohne die Überlappungsartefakte erfolgen kann, die bei der normalen Element-zu-Element-Alphaüberblendung auftreten. Hier ist das gleiche Beispiel mit aktivierter Ebene:

Ebenendeckkraft
Item {
    id: layered

    opacity: 0.5

    layer.enabled: true

    width: 100
    height: 100

    Rectangle { width: 80; height: 80; border.width: 1 }
    Rectangle { x: 20; y: 20; width: 80; height: 80; border.width: 1 }
}

Kombiniert mit ShaderEffekten

Wenn Sie layer.enabled auf true setzen, wird das Element zu texture provider, wodurch es möglich wird, das Element direkt als Textur zu verwenden, zum Beispiel in Kombination mit dem Typ ShaderEffect.

Es ist möglich, einen Effekt zur Laufzeit mit layer.effect auf eine Ebene anzuwenden:

Item {
    id: layerRoot
    layer.enabled: true
    layer.effect: ShaderEffect {
        fragmentShader: "effect.frag.qsb"
    }
}

Siehe ShaderEffect für weitere Informationen zur Verwendung von Effekten.

Hinweis: layer.enabled ist eigentlich nur eine bequemere Form der Verwendung von ShaderEffectSource.

Speicher und Leistung

Wenn die Ebene eines Objekts aktiviert ist, weist der Szenegraph der GPU den width x height x 4 entsprechenden Speicher zu. In Konfigurationen mit begrenztem Speicher sollten große Ebenen mit Vorsicht verwendet werden.

In der Welt von QPainter / QWidget ist es manchmal vorteilhaft, komplexe Inhalte in einer Pixmap, einem Bild oder einer Textur zwischenzuspeichern. In Qt Quick wird dies aufgrund der bereits vom Szenengraphen-Renderer angewandten Techniken in den meisten Fällen nicht der Fall sein. Übermäßige Zeichenaufrufe werden bereits durch die Stapelverarbeitung reduziert, und ein Cache wird in den meisten Fällen mehr Pixel überlagern als der ursprüngliche Inhalt. Der Overhead des Renderings auf einen Offscreen und die Überblendung, die mit dem Zeichnen der resultierenden Textur verbunden ist, ist daher oft kostspieliger, als wenn man das Element und seine Kinder einfach normal zeichnen lässt.

Außerdem kann ein Element, das eine Ebene verwendet, während des Renderings nicht gestapelt werden. Das bedeutet, dass eine Szene mit vielen überlagerten Elementen zu Leistungsproblemen führen kann.

Layering kann für visuelle Effekte bequem und nützlich sein, sollte aber in den meisten Fällen für die Dauer des Effekts aktiviert und danach deaktiviert werden.

Dokumentation der Eigenschaften

children : list<Item>

resources : list<QtObject>

Die Eigenschaft children enthält die Liste der visuellen Kinder dieses Elements. Die Eigenschaft resources enthält nicht-visuelle Ressourcen, auf die Sie namentlich verweisen möchten.

Im Allgemeinen ist es nicht notwendig, beim Hinzufügen von untergeordneten Elementen oder Ressourcen auf diese Eigenschaften zu verweisen, da die Standardeigenschaft data den Eigenschaften children und resources automatisch untergeordnete Objekte zuweist. Weitere Informationen finden Sie in der Dokumentation data.


height : real

width : real

x : real

y : real

Bestimmt die Position und Größe des Elements. Der Standardwert ist 0.

Die (x,y)-Position ist relativ zur parent.

Item { x: 100; y: 100; width: 100; height: 100 }

implicitHeight : real

implicitWidth : real

Legt die bevorzugte Breite oder Höhe des Elements fest.

Wenn width oder height nicht angegeben ist, wird die effektive Größe eines Elements durch seine implicitWidth oder implicitHeight bestimmt.

Ist ein Objekt jedoch das untergeordnete Element eines Layouts, bestimmt das Layout die bevorzugte Größe des Objekts anhand seiner impliziten Größe. In einem solchen Szenario wird die explizite width oder height ignoriert.

Die implizite Standardgröße für die meisten Objekte ist 0x0, einige Objekte haben jedoch eine inhärente implizite Größe, die nicht überschrieben werden kann, z. B. Image und Text.

Das Festlegen der impliziten Größe ist nützlich, um Komponenten zu definieren, die z. B. aufgrund ihres Inhalts eine bevorzugte Größe haben:

// Label.qml
import QtQuick 2.0

Item {
    property alias icon: image.source
    property alias label: text.text
    implicitWidth: text.implicitWidth + image.implicitWidth
    implicitHeight: Math.max(text.implicitHeight, image.implicitHeight)
    Image { id: image }
    Text {
        id: text
        wrapMode: Text.Wrap
        anchors.left: image.right; anchors.right: parent.right
        anchors.verticalCenter: parent.verticalCenter
    }
}

Hinweis: Die Verwendung von implicitWidth von Text oder TextEdit und das explizite Festlegen der Breite führt zu Leistungseinbußen, da der Text zweimal ausgelegt werden muss.


activeFocus : bool [read-only]

Diese schreibgeschützte Eigenschaft gibt an, ob das Element den aktiven Fokus hat.

Wenn activeFocus true ist, ist dieses Element entweder dasjenige, das derzeit Tastatureingaben erhält, oder es ist ein FocusScope Vorfahre des Elements, das derzeit Tastatureingaben erhält.

Normalerweise wird activeFocus durch das Setzen von focus auf ein Element und seine umschließenden FocusScope Objekte gewonnen. Im folgenden Beispiel haben die Objekte input und focusScope den aktiven Fokus, während das Wurzel-Rechteck-Objekt nicht aktiv ist.

import QtQuick 2.0

Rectangle {
    width: 100; height: 100

    FocusScope {
        id: focusScope
        focus: true

        TextInput {
            id: input
            focus: true
        }
    }
}

Siehe auch focus und Tastaturfokus in Qt Quick.


activeFocusOnTab : bool

Diese Eigenschaft legt fest, ob das Objekt in der Tabulator-Fokuskette sein soll. Standardmäßig ist diese Eigenschaft auf false gesetzt.

Die Tabulator-Fokus-Kette durchläuft die Elemente, indem sie zuerst das übergeordnete Element und dann dessen Kinder in der Reihenfolge besucht, in der sie in der Eigenschaft Kinder vorkommen. Wenn Sie die Tabulatortaste auf einem Element in der Tabulator-Fokuskette drücken, wird der Tastaturfokus zum nächsten Element in der Kette verschoben. Durch Drücken von BackTab (normalerweise Umschalt+Tab) wird der Fokus auf das vorherige Element gesetzt.

Um eine manuelle Tabulator-Fokuskette einzurichten, siehe KeyNavigation. Tabulator-Tastenereignisse, die von Keys oder KeyNavigation verwendet werden, haben Vorrang vor dem Verhalten der Fokuskette; ignorieren Sie die Ereignisse in anderen Tastenhandlern, damit sie sich ausbreiten können.

Hinweis: {QStyleHints::tabFocusBehavior}{tabFocusBehavior} kann den Fokus auf bestimmte Arten von Steuerelementen beschränken, z. B. nur auf Text- oder Listensteuerelemente. Dies ist unter macOS der Fall, wo der Fokus auf bestimmte Steuerelemente aufgrund von Systemeinstellungen eingeschränkt sein kann.

Siehe auch QStyleHints::tabFocusBehavior und focusPolicy.


anchors group

anchors.alignWhenCentered : bool

anchors.baseline : AnchorLine

anchors.baselineOffset : real

anchors.bottom : AnchorLine

anchors.bottomMargin : real

anchors.centerIn : Item

anchors.fill : Item

anchors.horizontalCenter : AnchorLine

anchors.horizontalCenterOffset : real

anchors.left : AnchorLine

anchors.leftMargin : real

anchors.margins : real

anchors.right : AnchorLine

anchors.rightMargin : real

anchors.top : AnchorLine

anchors.topMargin : real

anchors.verticalCenter : AnchorLine

anchors.verticalCenterOffset : real

Anker bieten eine Möglichkeit, ein Element zu positionieren, indem seine Beziehung zu anderen Elementen angegeben wird.

Ränder gelten für Anker oben, unten, links, rechts und zum Ausfüllen. Die Eigenschaft anchors.margins kann verwendet werden, um alle verschiedenen Ränder auf einmal auf denselben Wert zu setzen. Sie überschreibt nicht einen bestimmten Rand, der zuvor festgelegt wurde; um einen expliziten Rand zu löschen, setzen Sie seinen Wert auf undefined. Beachten Sie, dass Ränder ankerspezifisch sind und nicht angewendet werden, wenn ein Element keine Anker verwendet.

Versätze gelten für horizontale Mitte, vertikale Mitte und Grundlinienanker.

An Image verankerter Text, horizontal zentriert und vertikal darunter, mit einem Rand.
Item {
    Image {
        id: pic
        // ...
    }
    Text {
        id: label
        anchors.horizontalCenter: pic.horizontalCenter
        anchors.top: pic.bottom
        anchors.topMargin: 5
        // ...
    }
}

Links von Text, verankert rechts von Bild, mit einem Rand. Die y-Eigenschaft ist bei beiden standardmäßig 0.
Item {
    Image {
        id: pic
        // ...
    }
    Text {
        id: label
        anchors.left: pic.right
        anchors.leftMargin: 5
        // ...
    }
}

anchors.fill bietet eine bequeme Möglichkeit für ein Element, die gleiche Geometrie wie ein anderes Element zu haben, und ist gleichbedeutend mit der Verbindung aller vier Richtungsanker.

Um einen Ankerwert zu löschen, setzen Sie ihn auf undefined.

anchors.alignWhenCentered (Standardwert true) zwingt zentrierte Anker, sich an einem ganzen Pixel auszurichten; wenn das zu zentrierende Element einen ungeraden width oder height hat, wird das Element auf einem ganzen Pixel positioniert, anstatt auf einem halben Pixel platziert zu werden. Dadurch wird sichergestellt, dass das Element scharf gezeichnet wird. Es gibt Fälle, in denen dies nicht erwünscht ist, z. B. beim Drehen des Objekts, da die Mitte abgerundet wird und dadurch ein Ruckeln auftreten kann.

Hinweis: Sie können ein Element nur an Geschwistern oder einem übergeordneten Element verankern.

Weitere Informationen finden Sie unter Anker-Layouts.


antialiasing : bool

Wird von visuellen Elementen verwendet, um zu entscheiden, ob das Element Antialiasing verwenden soll oder nicht. In einigen Fällen benötigen Elemente mit Antialiasing mehr Speicher und sind möglicherweise langsamer zu rendern (siehe Antialiasing für weitere Details).

Der Standardwert ist false, kann aber durch abgeleitete Elemente überschrieben werden.


baselineOffset : int

Gibt die Position der Grundlinie des Elements in lokalen Koordinaten an.

Die Grundlinie eines Text Elements ist die imaginäre Linie, auf der der Text sitzt. Steuerelemente, die Text enthalten, setzen ihre Grundlinie normalerweise auf die Grundlinie ihres Textes.

Für Nicht-Text-Elemente wird ein Standard-Basislinien-Offset von 0 verwendet.


childrenRect group

childrenRect.height : real [read-only]

childrenRect.width : real [read-only]

childrenRect.x : real [read-only]

childrenRect.y : real [read-only]

Diese schreibgeschützte Eigenschaft enthält die gemeinsame Position und Größe der Kindelemente des Elements.

Diese Eigenschaft ist nützlich, wenn Sie auf die kollektive Geometrie der untergeordneten Elemente zugreifen müssen, um die korrekte Größe des Elements zu ermitteln.

Die zurückgegebene Geometrie ist für das Element lokal. Ein Beispiel:

Item {
    x: 50
    y: 100

    // prints: QRectF(-10, -20, 30, 40)
    Component.onCompleted: print(childrenRect)

    Item {
        x: -10
        y: -20
        width: 30
        height: 40
    }
}

clip : bool

Diese Eigenschaft gibt an, ob die Beschneidung aktiviert ist. Der Standardwert für Clipping ist false.

Wenn die Beschneidung aktiviert ist, werden die eigene Zeichnung und die Zeichnung der untergeordneten Elemente auf das Begrenzungsrechteck des Objekts zugeschnitten.

Hinweis: Das Beschneiden kann die Rendering-Leistung beeinträchtigen. Siehe Clipping für weitere Informationen.


containmentMask : QObject*

Diese Eigenschaft enthält eine optionale Maske für das Element, die in der Methode contains() verwendet wird. Sie wird derzeit hauptsächlich verwendet, um festzustellen, ob ein pointer event in dem Objekt gelandet ist oder nicht.

Standardmäßig gibt die Methode contains() für jeden Punkt innerhalb des Begrenzungsrahmens des Elements true zurück. containmentMask ermöglicht eine feinere Steuerung. Wenn zum Beispiel eine benutzerdefinierte C++ QQuickItem Unterklasse mit einer spezialisierten contains() Methode als containmentMask verwendet wird:

Item { id: item; containmentMask: AnotherItem { id: anotherItem } }

Die contains-Methode vonitem würde dann nur dann true zurückgeben, wenn die contains()-Implementierung von anotherItem true zurückgibt.

Eine Shape kann als Maske verwendet werden, damit ein Element nur innerhalb einer nicht rechteckigen Region auf pointer events reagiert:

Rectangle {
    width: 90; height: 100
    color: hoverHandler.hovered ? "wheat" : "lightgray"
    containmentMask: shape

    HoverHandler { id: hoverHandler }

    Shape {
        id: shape
        containsMode: Shape.FillContains

        ShapePath {
            fillColor: "lightsteelblue"
            startX: 10; startY: 20
            PathArc {
                x: 10; y: 80
                radiusX: 40; radiusY: 40
                useLargeArc: true
            }
            PathLine {
                x: 10; y: 20
            }
        }
    }
}

Es ist auch möglich, die Methode contains in QML zu definieren. Zum Beispiel, um ein kreisförmiges Element zu erstellen, das nur auf Ereignisse innerhalb seiner tatsächlichen Grenzen reagiert:

Rectangle {
    id: circle
    width: 100; height: width
    radius: width / 2
    color: tapHandler.pressed ? "tomato" : hoverHandler.hovered ? "darkgray" : "lightgray"

    TapHandler { id: tapHandler }
    HoverHandler { id: hoverHandler }

    containmentMask: QtObject {
        property alias radius: circle.radius
        function contains(point: point) : bool {
            return (Math.pow(point.x - radius, 2) + Math.pow(point.y - radius, 2)) < Math.pow(radius, 2)
        }
    }
}

Siehe auch Qt Quick Beispiele - Shapes.


data : list<QtObject> [default]

Die Eigenschaft data ermöglicht es Ihnen, visuelle Kinder und Ressourcen in einem Element frei zu mischen. Wenn Sie der Datenliste ein visuelles Element zuweisen, wird es zu einem untergeordneten Element, und wenn Sie einen anderen Objekttyp zuweisen, wird er als Ressource hinzugefügt.

Sie können also schreiben:

Item {
    Text {}
    Rectangle {}
    Timer {}
}

anstelle von:

Item {
    children: [
        Text {},
        Rectangle {}
    ]
    resources: [
        Timer {}
    ]
}

Im Allgemeinen sollte es nicht notwendig sein, auf die Eigenschaft data zu verweisen, da sie die Standardeigenschaft für Item ist und somit alle untergeordneten Elemente automatisch dieser Eigenschaft zugeordnet werden.


enabled : bool

Diese Eigenschaft gibt an, ob das Element Maus- und Tastaturereignisse empfängt. Standardmäßig ist dies true.

Die Einstellung dieser Eigenschaft wirkt sich direkt auf den Wert enabled der untergeordneten Elemente aus. Wenn sie auf false gesetzt wird, werden die enabled -Werte aller untergeordneten Elemente auch zu false. Wenn diese Eigenschaft auf true gesetzt wird, werden die enabled Werte der untergeordneten Elemente auf true zurückgesetzt, sofern sie nicht explizit auf false gesetzt wurden.

Wenn Sie diese Eigenschaft auf false setzen, wird activeFocus automatisch auf false gesetzt, und dieses Element erhält keine Tastaturereignisse mehr.

Siehe auch visible.


focus : bool

Diese Eigenschaft gibt an, ob das Element den Fokus innerhalb der umschließenden FocusScope hat. Wenn dies der Fall ist, erhält dieses Element den aktiven Fokus, wenn das umschließende Element FocusScope den aktiven Fokus erhält.

Im folgenden Beispiel erhält input den aktiven Fokus, wenn scope den aktiven Fokus erhält:

import QtQuick 2.0

Rectangle {
    width: 100; height: 100

    FocusScope {
        id: scope

        TextInput {
            id: input
            focus: true
        }
    }
}

Für die Zwecke dieser Eigenschaft wird davon ausgegangen, dass sich die Szene als Ganzes wie ein Fokusbereich verhält. In der Praxis bedeutet das, dass das folgende QML den aktiven Fokus beim Start auf input legt.

Rectangle {
    width: 100; height: 100

    TextInput {
          id: input
          focus: true
    }
}

Siehe auch activeFocus und Tastaturfokus in Qt Quick.


focusPolicy : enumeration [since 6.7]

Diese Eigenschaft bestimmt die Art und Weise, wie das Element den Fokus annimmt.

KonstanteBeschreibung
Qt.TabFocusDas Element erhält den Fokus durch Tabulieren.
Qt.ClickFocusDas Element erhält den Fokus durch Klicken.
Qt.StrongFocusDas Element akzeptiert den Fokus sowohl durch Tabulatoren als auch durch Klicken.
Qt.WheelFocusDas Element akzeptiert den Fokus durch Tabulieren, Klicken und Verwenden des Mausrads.
Qt.NoFocusDas Element ist nicht fokussierbar.

Hinweis: Diese Eigenschaft war in Qt 6.6 und früher ein Mitglied des Typs Control QML.

Diese Eigenschaft wurde in Qt 6.7 eingeführt.


layer.effect : Component

Enthält den Effekt, der auf diese Ebene angewendet wird.

Der Effekt ist normalerweise eine ShaderEffect Komponente, obwohl jede Item Komponente zugewiesen werden kann. Der Effekt sollte eine Quelltextureigenschaft mit einem Namen haben, der layer.samplerName entspricht.

Siehe auch layer.samplerName und Item Layers.


layer.enabled : bool

Gibt an, ob das Element mit Ebenen versehen ist oder nicht. Standardmäßig ist die Schichtung deaktiviert.

Ein Element mit Ebenen wird in eine Offscreen-Oberfläche gerendert und zwischengespeichert, bis es geändert wird. Die Aktivierung von Ebenen für komplexe QML-Elementhierarchien kann manchmal eine Optimierung darstellen.

Keine der anderen Ebeneneigenschaften hat einen Effekt, wenn die Ebene deaktiviert ist.

Siehe auch Item Layers.


layer.format : enumeration

Diese Eigenschaft definiert das Format der Hintergrundtextur. Die Änderung dieser Eigenschaft ist am sinnvollsten, wenn auch die layer.effect angegeben wird.

KonstanteBeschreibung
ShaderEffectSource.RGBA8
ShaderEffectSource.RGBA16F
ShaderEffectSource.RGBA32F
ShaderEffectSource.AlphaAb Qt 6.0 wird dieser Wert nicht mehr verwendet und hat in der Praxis die gleiche Wirkung wie RGBA8.
ShaderEffectSource.RGBAb Qt 6.0 wird dieser Wert nicht mehr verwendet und hat in der Praxis die gleiche Wirkung wie RGBA8.
ShaderEffectSource.RGBAAb Qt 6.0 wird dieser Wert nicht mehr verwendet und hat in der Praxis die gleiche Wirkung wie RGBA8.

Siehe auch Item Layers.


layer.live : bool [since 6.5]

Wenn diese Eigenschaft true ist, wird die Textur der Ebene bei jeder Aktualisierung des Elements aktualisiert. Andernfalls wird es immer ein eingefrorenes Bild sein.

Standardmäßig ist diese Eigenschaft auf true gesetzt.

Diese Eigenschaft wurde in Qt 6.5 eingeführt.

Siehe auch Item Layers.


layer.mipmap : bool

Wenn diese Eigenschaft true ist, werden Mipmaps für die Textur erzeugt.

Hinweis: Einige OpenGL ES 2-Implementierungen unterstützen kein Mipmapping von nicht-power-of-two Texturen.

Siehe auch Item Layers.


layer.samplerName : string

Enthält den Namen der Quelltextureigenschaft des Effekts.

Dieser Wert muss mit dem Namen der Quelltextureigenschaft des Effekts übereinstimmen, damit das Element die Offscreen-Oberfläche der Ebene korrekt an den Effekt übergeben kann.

Siehe auch layer.effect, ShaderEffect, und Item Layers.


layer.samples : enumeration

Diese Eigenschaft ermöglicht die Anforderung des Multisampling-Renderings in der Ebene.

Standardmäßig ist Multisampling immer dann aktiviert, wenn Multisampling für das gesamte Fenster aktiviert ist, vorausgesetzt, der verwendete Scenegraph-Renderer und die zugrunde liegende Grafik-API unterstützen dies.

Durch Setzen des Wertes auf 2, 4 usw. kann das Multisampling-Rendering für einen Teil der Szene angefordert werden, ohne dass das Multisampling für die gesamte Szene aktiviert wird. Auf diese Weise wird Multisampling nur auf einen bestimmten Teilbaum angewandt, was zu erheblichen Leistungssteigerungen führen kann, da Multisampling nicht auf andere Teile der Szene angewandt wird.

Hinweis: Das Aktivieren von Multisampling kann unabhängig von der Größe der Ebene potenziell teuer sein, da es hardware- und treiberabhängige Leistungs- und Speicherkosten verursacht.

Hinweis: Diese Eigenschaft ist nur funktionsfähig, wenn Unterstützung für Multisample-Renderbuffer und Framebuffer-Blits verfügbar ist. Andernfalls wird der Wert stillschweigend ignoriert.


layer.smooth : bool

Gibt an, ob die Ebene glatt transformiert wird. Wenn diese Eigenschaft aktiviert ist, wird das Sampling der Ebenentextur unter Verwendung der linear Interpolation durchgeführt, während ein nicht-glattes Sampling zur Verwendung des nearest Filtermodus führt.

Standardmäßig ist diese Eigenschaft auf false eingestellt.

Siehe auch Item Layers.


layer.sourceRect : rect

Diese Eigenschaft definiert den rechteckigen Bereich des Objekts, der in die Textur gerendert werden soll. Das Quellrechteck kann größer sein als das Objekt selbst. Wenn das Rechteck null ist, was der Standard ist, wird das gesamte Objekt in die Textur gerendert.

Siehe auch Item Layers.


layer.textureMirroring : enumeration

Diese Eigenschaft legt fest, wie die generierte Textur gespiegelt werden soll. Der Standardwert ist ShaderEffectSource.MirrorVertically. Eine benutzerdefinierte Spiegelung kann nützlich sein, wenn auf die generierte Textur direkt von benutzerdefinierten Shadern zugegriffen wird, wie z. B. von denjenigen, die von ShaderEffect angegeben werden. Wenn für das überlagerte Element kein Effekt angegeben ist, hat die Spiegelung keine Auswirkungen auf die UI-Darstellung des Elements.

KonstanteBeschreibung
ShaderEffectSource.NoMirroringKeine Spiegelung
ShaderEffectSource.MirrorHorizontallyDie erzeugte Textur wird entlang der X-Achse gespiegelt.
ShaderEffectSource.MirrorVerticallyDie erzeugte Textur wird entlang der Y-Achse gespiegelt.

layer.textureSize : size

Diese Eigenschaft enthält die gewünschte Pixelgröße der Ebenentextur. Wenn sie leer ist, was der Standard ist, wird die Größe des Elements verwendet.

Hinweis: Auf einigen Plattformen ist die Größe von Framebuffer-Objekten begrenzt, was bedeutet, dass die tatsächliche Texturgröße größer sein kann als die angeforderte Größe.

Siehe auch Item Layers.


layer.wrapMode : enumeration

Diese Eigenschaft definiert die mit der Textur verbundenen Umbruchmodi. Das Ändern dieser Eigenschaft ist am sinnvollsten, wenn die layer.effect angegeben ist.

KonstanteBeschreibung
ShaderEffectSource.ClampToEdgeGL_CLAMP_TO_EDGE sowohl horizontal als auch vertikal
ShaderEffectSource.RepeatHorizontallyGL_REPEAT horizontal, GL_CLAMP_TO_EDGE vertikal
ShaderEffectSource.RepeatVerticallyGL_CLAMP_TO_EDGE horizontal, GL_REPEAT vertikal
ShaderEffectSource.RepeatGL_REPEAT sowohl horizontal als auch vertikal

Hinweis: Einige OpenGL ES 2-Implementierungen unterstützen den GL_REPEAT-Wrap-Modus mit nicht-power-of-two-Texturen nicht.

Siehe auch Item Layers.


opacity : real

Diese Eigenschaft enthält die Opazität des Elements. Die Deckkraft wird als Zahl zwischen 0,0 (völlig transparent) und 1,0 (völlig undurchsichtig) angegeben. Der Standardwert ist 1.0.

Wenn diese Eigenschaft festgelegt ist, wird die angegebene Deckkraft auch individuell auf untergeordnete Elemente angewendet. Dies kann unter Umständen einen unbeabsichtigten Effekt haben. In der zweiten Gruppe von Rechtecken unten wurde beispielsweise für das rote Rechteck eine Deckkraft von 0,5 festgelegt, was sich auf die Deckkraft des blauen untergeordneten Rechtecks auswirkt, obwohl das untergeordnete Rechteck keine Deckkraft festgelegt hat.

Item {
    Rectangle {
        color: "red"
        width: 100; height: 100
        Rectangle {
            color: "blue"
            x: 50; y: 50; width: 100; height: 100
        }
    }
}

Item {
    Rectangle {
        opacity: 0.5
        color: "red"
        width: 100; height: 100
        Rectangle {
            color: "blue"
            x: 50; y: 50; width: 100; height: 100
        }
    }
}

Das Ändern der Deckkraft eines Elements hat keinen Einfluss darauf, ob das Element Benutzereingabeereignisse empfängt. (Im Gegensatz dazu stoppt das Setzen der Eigenschaft visible auf false Mausereignisse und das Setzen der Eigenschaft enabled auf false Maus- und Tastaturereignisse und entfernt außerdem den aktiven Fokus des Elements).

Siehe auch visible.


palette : Palette [since 6.0]

Diese Eigenschaft enthält die aktuell für das Element eingestellte Palette.

Diese Eigenschaft beschreibt die angeforderte Palette für das Element. Die Palette wird vom Stil des Elements verwendet, wenn alle Steuerelemente gerendert werden, und ist verfügbar, um sicherzustellen, dass benutzerdefinierte Steuerelemente die Konsistenz mit dem nativen Look and Feel der Plattform beibehalten können. Es ist üblich, dass verschiedene Plattformen oder verschiedene Stile verschiedene Paletten für eine Anwendung definieren.

Die Standardpalette hängt von der Systemumgebung ab. ApplicationWindow verwaltet eine System-/Themenpalette, die als Standard für alle Steuerelemente dient. Es kann auch spezielle Palettenvorgaben für bestimmte Arten von Steuerelementen geben. Sie können die Standard-Palette für Steuerelemente auch festlegen, indem Sie entweder

Elemente propagieren explizite Paletteneigenschaften von Eltern zu Kindern. Wenn Sie eine bestimmte Eigenschaft in der Palette eines Elements ändern, wird diese Eigenschaft an alle Kinder des Elements weitergegeben und überschreibt alle Systemvorgaben für diese Eigenschaft.

Item {
    palette {
        buttonText: "maroon"
        button: "lavender"
    }

    Button {
        text: "Click Me"
    }
}

Diese Eigenschaft wurde in Qt 6.0 eingeführt.

Siehe auch Window::palette, Popup::palette, ColorGroup, Palette, und SystemPalette.


parent : Item

Diese Eigenschaft enthält das visuelle Elternteil des Elements.

Hinweis: Das Konzept des visuellen Elternteils unterscheidet sich von dem des QObject Elternteils. Der visuelle Elternteil eines Elements muss nicht unbedingt mit seinem Objekt-Elternteil identisch sein. Siehe Konzepte - Visuelles Elternteil in Qt Quick für weitere Details.


rotation : real

Diese Eigenschaft enthält die Drehung des Elements in Grad im Uhrzeigersinn um seine transformOrigin.

Der Standardwert ist 0 Grad (d. h. keine Drehung).

Rectangle {
    color: "blue"
    width: 100; height: 100
    Rectangle {
        color: "red"
        x: 25; y: 25; width: 50; height: 50
        rotation: 30
    }
}

Siehe auch Transform und Rotation.


scale : real

Diese Eigenschaft enthält den Skalierungsfaktor für dieses Element.

Ein Skalierungsfaktor von weniger als 1,0 bewirkt, dass das Element kleiner dargestellt wird, und ein Skalierungsfaktor von mehr als 1,0, dass das Element größer dargestellt wird. Ein negativer Maßstab bewirkt, dass das Objekt gespiegelt wiedergegeben wird.

Der Standardwert ist 1,0.

Die Skalierung wird von transformOrigin aus angewendet.

import QtQuick 2.0

Rectangle {
    color: "blue"
    width: 100; height: 100

    Rectangle {
        color: "green"
        width: 25; height: 25
    }

    Rectangle {
        color: "red"
        x: 25; y: 25; width: 50; height: 50
        scale: 1.4
        transformOrigin: Item.TopLeft
    }
}

Siehe auch Transform und Scale.


smooth : bool

Wird in erster Linie bei bildbasierten Objekten verwendet, um zu entscheiden, ob das Objekt Smooth Sampling verwenden soll oder nicht. Eine glatte Abtastung wird mit linearer Interpolation durchgeführt, während eine nicht-glatte Abtastung mit dem nächsten Nachbarn durchgeführt wird.

In Qt Quick 2.0 hat diese Eigenschaft minimale Auswirkungen auf die Leistung.

Standardmäßig ist diese Eigenschaft auf true eingestellt.


state : string

Diese Eigenschaft enthält den Namen des aktuellen Zustands des Elements.

Befindet sich das Element in seinem Standardzustand, d. h. es wurde kein expliziter Zustand festgelegt, enthält diese Eigenschaft eine leere Zeichenfolge. Ebenso können Sie ein Element in seinen Standardzustand zurückversetzen, indem Sie diese Eigenschaft auf eine leere Zeichenfolge setzen.

Siehe auch Qt Quick Zustände.


states : list<State>

Diese Eigenschaft enthält die Liste der möglichen Zustände für dieses Element. Um den Zustand dieses Elements zu ändern, setzen Sie die Eigenschaft state auf einen dieser Zustände oder setzen Sie die Eigenschaft state auf eine leere Zeichenfolge, um das Element in seinen Standardzustand zurückzusetzen.

Diese Eigenschaft wird als eine Liste von State Objekten angegeben. Das folgende Beispiel zeigt ein Objekt mit den Zuständen "red_color" und "blue_color":

import QtQuick 2.0

Rectangle {
    id: root
    width: 100; height: 100

    states: [
        State {
            name: "red_color"
            PropertyChanges { root.color: "red" }
        },
        State {
            name: "blue_color"
            PropertyChanges { root.color: "blue" }
        }
    ]
}

Weitere Einzelheiten zur Verwendung von Zuständen und Übergängen finden Sie unter Qt Quick Zustände und Animation und Übergänge in Qt Quick.

Siehe auch transitions.


transform: list<Transform> [read-only]

Diese Eigenschaft enthält die Liste der anzuwendenden Transformationen.

Für weitere Informationen siehe Transform.


transformOrigin : enumeration

Diese Eigenschaft enthält den Ursprungspunkt, um den Skalierung und Drehung transformiert werden.

Es stehen neun Transformationsursprünge zur Verfügung, wie in der folgenden Abbildung dargestellt. Der Standard-Ursprung der Transformation ist Item.Center.

In diesem Beispiel wird ein Bild um seine rechte untere Ecke gedreht.

Image {
    source: "myimage.png"
    transformOrigin: Item.BottomRight
    rotation: 45
}

Um einen beliebigen Transformationsursprung zu setzen, verwenden Sie die Transformationsarten Scale oder Rotation mit transform.


transitions : list<Transition>

Diese Eigenschaft enthält die Liste der Übergänge für dieses Element. Diese definieren die Übergänge, die auf das Element angewendet werden, wenn es seine state ändert.

Diese Eigenschaft wird als eine Liste von Transition Objekten angegeben. Ein Beispiel:

import QtQuick 2.0

Item {
    transitions: [
        Transition {
            //...
        },
        Transition {
            //...
        }
    ]
}

Weitere Einzelheiten zur Verwendung von Zuständen und Übergängen finden Sie unter Qt Quick Zustände und Animation und Übergänge in Qt Quick.

Siehe auch states.


visible : bool

Diese Eigenschaft gibt an, ob das Element sichtbar ist. Standardmäßig ist dies true.

Die Einstellung dieser Eigenschaft wirkt sich direkt auf den Wert visible der untergeordneten Elemente aus. Wenn sie auf false gesetzt wird, werden die visible Werte aller untergeordneten Elemente auch zu false. Wenn sie auf true gesetzt wird, werden die visible Werte der untergeordneten Elemente auf true zurückgesetzt, es sei denn, sie wurden explizit auf false gesetzt.

(Aufgrund dieses Weiterflussverhaltens hat die Verwendung der Eigenschaft visible möglicherweise nicht die beabsichtigte Wirkung, wenn eine Eigenschaftsbindung nur auf explizite Eigenschaftsänderungen reagieren soll. In solchen Fällen kann es besser sein, stattdessen die Eigenschaft opacity zu verwenden.)

Wenn diese Eigenschaft auf false gesetzt wird, empfängt das Element keine Mausereignisse mehr, aber es empfängt weiterhin Tastenereignisse und behält die Tastatur focus bei, falls sie gesetzt wurde. (Im Gegensatz dazu werden bei der Einstellung der Eigenschaft enabled auf false sowohl Maus- als auch Tastaturereignisse gestoppt und der Fokus des Elements wird entfernt).

Hinweis: Der Wert dieser Eigenschaft wird nur durch Änderungen dieser Eigenschaft oder der übergeordneten Eigenschaft visible beeinflusst. Er ändert sich zum Beispiel nicht, wenn das Element aus dem Bildschirm verschoben wird oder wenn opacity auf 0 gesetzt wird.

Siehe auch opacity und enabled.


visibleChildren : list<Item>

Diese schreibgeschützte Eigenschaft listet alle Kinder des Elements auf, die derzeit sichtbar sind. Beachten Sie, dass sich die Sichtbarkeit eines untergeordneten Elements explizit geändert haben kann, oder weil sich die Sichtbarkeit dieses (übergeordneten) Elements oder eines anderen Großelternteils geändert hat.


z : real

Legt die Stapelreihenfolge von Geschwisterelementen fest. Standardmäßig ist die Stapelreihenfolge 0.

Elemente mit einem höheren Stapelungswert werden über Geschwister mit einer niedrigeren Stapelungsreihenfolge gezeichnet. Elemente mit demselben Stapelwert werden in der Reihenfolge ihres Erscheinens von unten nach oben gezeichnet. Elemente mit einem negativen Stapelungswert werden unter dem Inhalt ihrer Eltern gezeichnet.

Das folgende Beispiel zeigt die verschiedenen Auswirkungen der Stapelreihenfolge.

Gleiche z - spätere Kinder über früheren Kindern:
Item {
    Rectangle {
        color: "red"
        width: 100; height: 100
    }
    Rectangle {
        color: "blue"
        x: 50; y: 50; width: 100; height: 100
    }
}

Höhere z oben:
Item {
    Rectangle {
        z: 1
        color: "red"
        width: 100; height: 100
    }
    Rectangle {
        color: "blue"
        x: 50; y: 50; width: 100; height: 100
    }
}

Gleiche z - Kinder über Eltern:
Item {
    Rectangle {
        color: "red"
        width: 100; height: 100
        Rectangle {
            color: "blue"
            x: 50; y: 50; width: 100; height: 100
        }
    }
}

Niedriger z unten:
Item {
    Rectangle {
        color: "red"
        width: 100; height: 100
        Rectangle {
            z: -1
            color: "blue"
            x: 50; y: 50; width: 100; height: 100
        }
    }
}

Methode Dokumentation

point mapFromItem(Item item, point p)

point mapFromItem(Item item, real x, real y)

rect mapFromItem(Item item, real x, real y, real width, real height)

rect mapFromItem(Item item, rect r)

Bildet den Punkt (x, y) oder das Rechteck (x, y, width, height), der/das sich im Koordinatensystem von item befindet, auf das Koordinatensystem dieses Elements ab und gibt ein point oder rect zurück, das der abgebildeten Koordinate entspricht.

Die folgenden Eigenschaften des Elements werden bei der Zuordnung verwendet: x, y, scale, rotation, transformOrigin und transform.

Gehören die Elemente zu verschiedenen Szenen, enthält die Zuordnung die relative Position der beiden Szenen.

Wenn item ein null Wert ist, wird der Punkt oder das Rechteck aus dem Koordinatensystem der Szene zugeordnet.

Die Versionen, die Punkt und Rect akzeptieren, sind seit Qt 5.15.


point mapToItem(Item item, point p)

point mapToItem(Item item, real x, real y)

rect mapToItem(Item item, real x, real y, real width, real height)

rect mapToItem(Item item, rect r)

Bildet den Punkt (x, y) oder das Rechteck (x, y, width, height), der/das sich im Koordinatensystem dieses Elements befindet, auf das Koordinatensystem von item ab und gibt ein point oder rect zurück, das der abgebildeten Koordinate entspricht.

Die folgenden Eigenschaften des Elements werden bei der Zuordnung verwendet: x, y, scale, rotation, transformOrigin und transform.

Gehören die Elemente zu verschiedenen Szenen, enthält die Zuordnung die relative Position der beiden Szenen.

Wenn item ein null Wert ist, wird der Punkt oder das Rechteck auf das Koordinatensystem der Szene abgebildet.

Die Versionen, die point und rect akzeptieren, sind seit Qt 5.15.


childAt(real x, real y)

Gibt das erste sichtbare untergeordnete Element zurück, das am Punkt (x, y) innerhalb des Koordinatensystems dieses Elements gefunden wurde.

Gibt null zurück, wenn es kein solches Element gibt.


bool contains(point point)

Gibt true zurück, wenn dieses Element point enthält, das sich in lokalen Koordinaten befindet; andernfalls wird false zurückgegeben. Dies ist dieselbe Prüfung, die für den Treffertest von QEventPoint während der Ereignisübermittlung verwendet wird, und wird von containmentMask beeinflusst, wenn es gesetzt ist.


[since 6.3] dumpItemTree()

Gibt einige Details über den visuellen Baum von Items aus, beginnend mit diesem Item und seinen Kindern, rekursiv.

Die Ausgabe sieht ähnlich aus wie in diesem QML-Code:

function dump(object, indent) {
    console.log(indent + object)
    for (const i in object.children)
        dump(object.children[i], indent + "    ")
}

dump(myItem, "")

Wenn Sie also mehr Details wünschen, können Sie Ihre eigene Funktion implementieren und zusätzliche Ausgaben in die console.log einfügen, wie z.B. die Werte bestimmter Eigenschaften.

Diese Methode wurde in Qt 6.3 eingeführt.

Siehe auch QObject::dumpObjectTree().


forceActiveFocus()

Erzwingt den aktiven Fokus auf das Element.

Diese Methode setzt den Fokus auf das Element und stellt sicher, dass alle Vorgängerobjekte von FocusScope in der Objekthierarchie ebenfalls focus erhalten.

Der Grund für den Fokuswechsel wird Qt::OtherFocusReason. Verwenden Sie die überladene Methode, um den Grund für den Fokuswechsel anzugeben, um eine bessere Handhabung des Fokuswechsels zu ermöglichen.

Siehe auch activeFocus.


forceActiveFocus(Qt::FocusReason reason)

Dies ist eine überladene Funktion.

Erzwingt den aktiven Fokus auf das Element mit dem angegebenen reason.

Diese Methode setzt den Fokus auf das Element und stellt sicher, dass alle Vorgängerobjekte FocusScope in der Objekthierarchie ebenfalls mit focus versehen werden.

Siehe auch activeFocus und Qt::FocusReason.


bool grabToImage(callback, targetSize)

Greift das Element in ein speicherinternes Bild.

Der Grabvorgang erfolgt asynchron und die JavaScript-Funktion callback wird aufgerufen, wenn der Grabvorgang abgeschlossen ist. Der Rückruf nimmt ein Argument entgegen, nämlich das Ergebnis des Greifvorgangs, ein ItemGrabResult Objekt.

Verwenden Sie targetSize, um die Größe des Zielbildes anzugeben. Standardmäßig hat das Ergebnis die gleiche Größe wie das Objekt.

Wenn der Grab-Vorgang nicht gestartet werden konnte, gibt die Funktion false zurück.

Der folgende Ausschnitt zeigt, wie ein Objekt gegriffen und das Ergebnis in einer Datei gespeichert wird:

Rectangle {
    id: sourceRectangle
    width: 100
    height: 100
    focus: true
    gradient: Gradient {
        GradientStop { position: 0; color: "steelblue" }
        GradientStop { position: 1; color: "black" }
    }

    Keys.onSpacePressed: {
        sourceRectangle.grabToImage(function(result) {
           result.saveToFile("something.png")
        })
    }
}

Der folgende Ausschnitt zeigt, wie ein Element gegriffen und das Ergebnis in einem anderen Bildelement verwendet wird:

Image {
    id: image
}

Keys.onSpacePressed: {
    sourceRectangle.grabToImage(function(result) {
        image.source = result.url
    }, Qt.size(50, 50))
}

Hinweis: Diese Funktion rendert das Element auf eine Oberfläche außerhalb des Bildschirms und kopiert diese Oberfläche aus dem GPU-Speicher in den CPU-Speicher, was recht kostspielig sein kann. Für eine "Live"-Vorschau verwenden Sie layers oder ShaderEffectSource.


point mapFromGlobal(real x, real y)

Überträgt den Punkt (x, y), der sich im globalen Koordinatensystem befindet, auf das Koordinatensystem des Objekts und gibt eine point zurück, die der übertragenen Koordinate entspricht.

Die folgenden Eigenschaften des Elements werden bei der Zuordnung verwendet: x, y, scale, rotation, transformOrigin und transform.

Wenn die Elemente Teil verschiedener Szenen sind, enthält die Zuordnung die relative Position der beiden Szenen.


point mapToGlobal(real x, real y)

Der Punkt (x, y), der sich im Koordinatensystem dieses Elements befindet, wird auf das globale Koordinatensystem abgebildet, und es wird ein point zurückgegeben, das der abgebildeten Koordinate entspricht.

Die folgenden Eigenschaften des Objekts werden bei der Zuordnung verwendet: x, y, scale, rotation, transformOrigin, und transform.

Wenn die Elemente Teil verschiedener Szenen sind, enthält die Zuordnung die relative Position der beiden Szenen.


nextItemInFocusChain(bool forward)

Gibt das Element in der Fokuskette zurück, das sich neben diesem Element befindet. Wenn forward gleich true ist oder nicht angegeben wird, ist es das nächste Element in Vorwärtsrichtung. Ist forward gleich false, handelt es sich um das nächste Element in Rückwärtsrichtung.


© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.