Qtquick qml:如何将逻辑与 [=10in Qtquick UI 应用程序分开?
Qtquick qml : How to seperate Logic from UI in Qtquick UI Application?
假设,我想将逻辑代码与 UI 代码分离为 myApp.qml 和 myAppForm.ui.qml。
ui.qml不支持javascript逻辑,例如鼠标事件。
假设,下面的问题。
//myAppForm.ui.qml
import QtQuick 2.4
Item {
Rectangle {
id: rectangle1
color: "#a0ebfb"
anchors.fill: parent
MouseArea {
id: mouse1
anchors.fill: parent
}
}
}
以上是UI代码。我需要将逻辑代码分开,
//myApp.qml
import QtQuick 2.4
myAppForm {
mouse1{
onClicked: {
rectangle1.color = 'red'
}
}
}
显然,上面的方法是行不通的。我在问如何做类似的事情。
谢谢。
您可以使用别名 属性 扩展鼠标区域。这是修改后的代码。
//myAppForm.ui.qml
Item {
Property alias rectMouseArea: mouse1
Rectangle {
id: rectangle1
color: "#a0ebfb"
anchors.fill: parent
MouseArea {
id: mouse1
anchors.fill: parent
}
}
}
//myApp.qml
import QtQuick 2.4
myAppForm {
//mouse1{
rectMouseArea.onClicked: {
rectangle1.color = 'red'
}
//}
}
假设,我想将逻辑代码与 UI 代码分离为 myApp.qml 和 myAppForm.ui.qml。
ui.qml不支持javascript逻辑,例如鼠标事件。
假设,下面的问题。
//myAppForm.ui.qml
import QtQuick 2.4
Item {
Rectangle {
id: rectangle1
color: "#a0ebfb"
anchors.fill: parent
MouseArea {
id: mouse1
anchors.fill: parent
}
}
}
以上是UI代码。我需要将逻辑代码分开,
//myApp.qml
import QtQuick 2.4
myAppForm {
mouse1{
onClicked: {
rectangle1.color = 'red'
}
}
}
显然,上面的方法是行不通的。我在问如何做类似的事情。
谢谢。
您可以使用别名 属性 扩展鼠标区域。这是修改后的代码。
//myAppForm.ui.qml
Item {
Property alias rectMouseArea: mouse1
Rectangle {
id: rectangle1
color: "#a0ebfb"
anchors.fill: parent
MouseArea {
id: mouse1
anchors.fill: parent
}
}
}
//myApp.qml
import QtQuick 2.4
myAppForm {
//mouse1{
rectMouseArea.onClicked: {
rectangle1.color = 'red'
}
//}
}