En esta página

State QML Type

Define configuraciones de objetos y propiedades. Más...

Import Statement: import QtQuick

Propiedades

Descripción detallada

Un estado es un conjunto de cambios por lotes de la configuración por defecto.

Todos los elementos tienen un estado por defecto que define la configuración por defecto de los objetos y los valores de las propiedades. Se pueden definir nuevos estados añadiendo elementos State a la propiedad states para permitir que los elementos cambien entre diferentes configuraciones. Estas configuraciones pueden, por ejemplo, utilizarse para aplicar diferentes conjuntos de valores de propiedades o ejecutar diferentes scripts.

El siguiente ejemplo muestra un único Rectangle. En el estado por defecto, el rectángulo es de color negro. En el estado "pulsado", un objeto PropertyChanges cambia el color del rectángulo a rojo. Al hacer clic en MouseArea, el estado del rectángulo cambia entre el estado predeterminado y el estado de "clic", con lo que el color del rectángulo cambia entre negro y rojo.

import QtQuick

Rectangle {
    id: myRect
    width: 100; height: 100
    color: "black"

    MouseArea {
        id: mouseArea
        anchors.fill: parent
        onClicked: myRect.state == 'clicked' ? myRect.state = "" : myRect.state = 'clicked';
    }

    states: [
        State {
            name: "clicked"
            PropertyChanges { target: myRect; color: "red" }
        }
    ]
}

Observe que el estado por defecto se indica con una cadena vacía ("").

Los estados se utilizan comúnmente junto con las transiciones para proporcionar animaciones cuando se producen cambios de estado.

Nota: No está permitido establecer el estado de un objeto desde otro estado del mismo objeto.

Véase también Ejemplo de estados, Qt Quick Estados, Transiciones y Qt Qml.

Documentación de Propiedades

changes : list<Change> [default read-only]

Esta propiedad contiene los cambios a aplicar para este estado

Por defecto, estos cambios se aplican al estado por defecto. Si el estado extiende otro estado, entonces los cambios se aplican contra el estado que se está extendiendo.

extend : string

Esta propiedad contiene el estado que este estado extiende.

Cuando un estado extiende otro estado, hereda todos los cambios de ese estado.

El estado que se extiende se trata como el estado base en lo que respecta a los cambios especificados por el estado que se extiende.

name : string

Esta propiedad contiene el nombre del estado.

Cada estado debe tener un nombre único dentro de su elemento.

when : bool

Esta propiedad indica cuándo debe aplicarse el estado.

Debe establecerse a una expresión que evalúe a true cuando quieras que se aplique el estado. Por ejemplo, el siguiente Rectangle cambia dentro y fuera del estado "oculto" cuando se pulsa MouseArea:

Rectangle {
    id: myRect
    width: 100; height: 100
    color: "red"

    MouseArea { id: mouseArea; anchors.fill: parent }

    states: State {
        name: "hidden"; when: mouseArea.pressed
        PropertyChanges { target: myRect; opacity: 0 }
    }
}

Si varios estados de un grupo tienen cláusulas when que se evalúan como true al mismo tiempo, se aplicará el primer estado que coincida. Por ejemplo, en el siguiente fragmento state1 siempre se seleccionará en lugar de state2 cuando sharedCondition se convierta en true.

Item {
    states: [
        State { name: "state1"; when: sharedCondition },
        State { name: "state2"; when: sharedCondition }
    ]
    // ...
}

© 2026 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.