在 QML 中使用 id 的正确方法是什么
What is the proper way to use ids in QML
我需要在父 qml 中使用我的大部分子 qml children,所以使用别名我现在正在做,但有些我不喜欢调用 login.help.visible太多的点。有人能给我最好的解决方案吗?
这是我的代码
main.qml
import QtQuick 2.3
import QtQuick.Controls 1.2
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Rectangle{
anchors.fill: parent
Widget{
id: login
}
MouseArea{
anchors.fill: parent
onClicked: login.help.visible = false
onEntered: {
login.help.visible = true
login.progress.visible = true
ogin.pwd.visible = true
}
onExited: {
login.help.visible = false
login.progress.visible = false
ogin.pwd.visible = false
}
}
}
}
Widget.qml
import QtQuick 2.0
import QtQuick.Controls 1.2
Item {
id: newid
property alias help: helpid
property alias progress: ploder
property alias username: name
property alias password: pwd
Help{
id: helpid
}
TextCustom{
id: name
}
TextCustom{
id: pwd
}
progressLoader{
id: ploder
}
}
通常,一旦我定义了一个新的 Component
,我会通过向用户隐藏所有内容来封装其子项、逻辑和属性,同时公开可自由修改的属性(甚至是属于到我的组件的子项)通过其属性(又名 property
关键字,正确绑定到组件或其子项的目标属性)。
这样,我的组件的子组件就与组件本身的用户很好地隔离了。
下面是一个例子:
// MyComponent.qml
Item {
property alias B: firstChild.B
Item {
id: firstChild
property int A: 0 // this is hidden to the users of MyComponent...
property int B: 0 // ... this is not, indeed
}
}
// AnotherComponent.qml
// the outer Component has the following child
MyComponent {
B: 3 // directly modifies the property B of firstChild in MyComponent
}
我需要在父 qml 中使用我的大部分子 qml children,所以使用别名我现在正在做,但有些我不喜欢调用 login.help.visible太多的点。有人能给我最好的解决方案吗?
这是我的代码
main.qml
import QtQuick 2.3
import QtQuick.Controls 1.2
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Rectangle{
anchors.fill: parent
Widget{
id: login
}
MouseArea{
anchors.fill: parent
onClicked: login.help.visible = false
onEntered: {
login.help.visible = true
login.progress.visible = true
ogin.pwd.visible = true
}
onExited: {
login.help.visible = false
login.progress.visible = false
ogin.pwd.visible = false
}
}
}
}
Widget.qml
import QtQuick 2.0
import QtQuick.Controls 1.2
Item {
id: newid
property alias help: helpid
property alias progress: ploder
property alias username: name
property alias password: pwd
Help{
id: helpid
}
TextCustom{
id: name
}
TextCustom{
id: pwd
}
progressLoader{
id: ploder
}
}
通常,一旦我定义了一个新的 Component
,我会通过向用户隐藏所有内容来封装其子项、逻辑和属性,同时公开可自由修改的属性(甚至是属于到我的组件的子项)通过其属性(又名 property
关键字,正确绑定到组件或其子项的目标属性)。
这样,我的组件的子组件就与组件本身的用户很好地隔离了。
下面是一个例子:
// MyComponent.qml
Item {
property alias B: firstChild.B
Item {
id: firstChild
property int A: 0 // this is hidden to the users of MyComponent...
property int B: 0 // ... this is not, indeed
}
}
// AnotherComponent.qml
// the outer Component has the following child
MyComponent {
B: 3 // directly modifies the property B of firstChild in MyComponent
}