Spec-Zone.ru › Qt

Тип QML PropertyChanges

Описывает новые привязки свойств или значения для состояния. Подробнее...

Оператор импорта: import QtQuick
  • Список всех членов, включая унаследованные

Свойства

  • explicit : bool
  • restoreEntryValues : bool
  • target : Object

Подробное описание

PropertyChanges используется для определения значений или привязок свойств в состоянии. Это позволяет изменять значения свойств элемента при переключении между состояниями.

Для создания объекта PropertyChanges укажите элемент target, свойства которого нужно изменить, и определите новые значения или привязки свойств. Например:

import QtQuick 2.0

Item {
    id: container
    width: 300; height: 300

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

        MouseArea {
           id: mouseArea
           anchors.fill: parent
        }

        states: State {
           name: "resized"; when: mouseArea.pressed
           PropertyChanges { target: rect; color: "blue"; height: container.height }
        }
    }
}

Когда нажата кнопка мыши, прямоугольник переходит в состояние resized. В этом состоянии объект PropertyChanges устанавливает цвет прямоугольника в синий и значение height в значение container.height.

Обратите внимание, что это автоматически привязывает rect.height к container.height в состоянии resized. Если привязка свойства не должна устанавливаться, и высота должна просто устанавливаться в значение container.height в момент изменения состояния, установите свойство explicit в значение true.

Объект PropertyChanges также может переопределять обработчик сигналов по умолчанию для объекта, чтобы реализовать обработчик сигналов, специфичный для нового состояния:

PropertyChanges {
    target: myMouseArea
    onClicked: doSomethingDifferent()
}

Примечание: PropertyChanges можно использовать для изменения отступов привязки, но не других значений привязки; для этого используйте AnchorChanges. Аналогично, для изменения значения parent элемента Item используйте ParentChange.

Сброс значений свойств

Значение undefined может использоваться для сброса значения свойства для состояния. В следующем примере, когда myText переходит в состояние widerText, его свойство width сбрасывается, возвращая тексту естественную ширину и отображая всю строку на одной строке.

Rectangle {
    width: 300; height: 200

    Text {
        id: myText
        width: 50
        wrapMode: Text.WordWrap
        text: "a text string that is longer than 50 pixels"

        states: State {
            name: "widerText"
            PropertyChanges { target: myText; width: undefined }
        }
    }

    MouseArea {
        anchors.fill: parent
        onClicked: myText.state = "widerText"
    }
}

Немедленные изменения свойств в переходах

При использовании переходов для анимации изменений состояния, они анимируют свойства от их значений в текущем состоянии до значений, определённых в новом состоянии (как определено объектами PropertyChanges). Однако иногда желательно установить значение свойства немедленно во время перехода без анимации; в этих случаях можно использовать тип PropertyAction для принудительного изменения свойства.

Для получения дополнительной информации см. документацию по PropertyAction.

Примечание: Свойства visible и enabled элемента Item ведут себя не совсем так же, как и другие свойства в PropertyChanges. Поскольку эти свойства могут изменяться неявно через состояние родительского элемента, их следует устанавливать явно во всех PropertyChanges. Элемент по-прежнему не будет включён/отображён, если один из его родителей не включён или не отображается.

См. также Пример состояния, Состояния Qt Quick и Qt QML.

Документация свойств

explicit : bool

Если explicit установлен в true, любые потенциальные привязки будут интерпретироваться как одноразовые присваивания, происходящие при входе в состояние.

В следующем примере добавление explicit предотвращает привязку myItem.width к parent.width. Вместо этого ему присваивается значение parent.width в момент изменения состояния.

PropertyChanges {
    target: myItem
    explicit: true
    width: parent.width
}

По умолчанию explicit равен false.

restoreEntryValues : bool

Это свойство указывает, следует ли восстанавливать предыдущие значения при выходе из состояния.

Значение по умолчанию равно true. Установка этого значения в false создаёт временное состояние, которое имеет постоянное влияние на значения свойств.

target : Object

Это свойство содержит объект, который содержит свойства, которые нужно изменить.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qml-qtquick-propertychanges.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API