Тип QML PropertyChanges
Описание новых привязок свойств или значений для состояния Подробнее...
| Заявление об импорте: | import QtQuick 2.5 |
Свойства
- explicit : bool
- restoreEntryValues : bool
- target : Объект
Подробное описание
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 }
}
}
} При нажатии мыши прямоугольник Rectangle переходит в состояние 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 States и 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 : Объект
Это свойство содержит объект, который содержит изменяемые свойства.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qml-qtquick-propertychanges.html