在 qml ui 表单中使用行为
Posted
技术标签:
【中文标题】在 qml ui 表单中使用行为【英文标题】:Using behavior in qml ui form 【发布时间】:2017-08-09 13:11:16 【问题描述】:有没有办法使用项目外部的行为? (QtQuick 设计器不支持行为)。
假设我在 From.ui.qml 中定义了一个矩形,然后在文件 Form.qml 中定义了一个 id rec,我想在 rec 的 x 属性上分配一个行为,我该怎么做?
【问题讨论】:
您在From.ui.qml
的根元素中公开了rec
的x
属性。然后你可以在这个暴露的属性上定义一个行为。
好吧,但它也会作为公共财产公开??
是的。这是真的。
您的解决方案可以完成这项工作,但将其公开为公共财产听起来有点糟糕。
【参考方案1】:
-
步骤:使用您要更改的属性公开对象
这将在ui.qml
文件中创建一个property alias
。
// NewFormular.ui.qml
import QtQuick 2.4
Item
width: 400
height: 400
property alias rectangle1: rectangle1
Rectangle
id: rectangle1
x: 77
y: 69
width: 200
height: 200
color: "#ffffff"
-
步骤:添加行为
//New.qml
import QtQuick 2.4
NewFormular
Behavior on rectangle1.x
NumberAnimation duration: 500
Timer
running: true
interval: 1000
repeat: true
onTriggered: rectangle1.x = (rectangle1.x + 500) % 600
-
步骤:在您的
main.qml
中实例化它
//main.qml
import QtQuick 2.7
import QtQuick.Controls 2.0
ApplicationWindow
id: window
width: 800
height: 600
visible: true
color: 'grey'
New
anchors.fill: parent
如果你想再次隐藏它,你可以再次将其包裹在Item
中:
//New.qml v2
import QtQuick 2.4
Item
id: root
NewFormular
anchors.fill: parent
Behavior on rectangle1.x
NumberAnimation duration: 500
Timer
running: true
interval: 1000
repeat: true
onTriggered: rectangle1.x = (rectangle1.x + 500) % 600
【讨论】:
好吧,我明白了,您建议我创建一个普通的 QtQuick 设计器项目,将其包装在另一个项目中并公开我想要的属性。 是的,正如documentatio 所述,Behavior
s 在ui.qml
-文件中不受支持,唯一的选择是在外部添加它们 - 您需要公开属性至少在ui.qml
-文件中。
好的,这是唯一的解决方案,我会坚持下去。非常感谢您的帮助以上是关于在 qml ui 表单中使用行为的主要内容,如果未能解决你的问题,请参考以下文章