QML - 如何从另一个组件获取 comboBox.currentText?



我刚开始学习qml,并有一个关于如何从另一个组件获取comboBox.currentText的问题。

代码示例:

App {
id: app
width: px(250); height: px(250)
NavigationStack {
Page {
id: page
navigationBarHidden: true
AppText { text: "startpage" }
SimpleButton{
x: 220; y: 0; onClicked: page.navigationStack.push(settingsPage)
}
AppText {
x: 0; y: 50; text: "text " + comboBox1.currentText
}
}
}
Component {
id: settingsPage
Page {
navigationBarHidden: true
AppText { text: qsTr("settings page") }
SimpleButton{
x: 220; y: 0; onClicked: page.navigationStack.push(lastPage)
}
ComboBox {
id: comboBox1
currentIndex: 0
x: 10; y: 40
style: ComboBoxStyle {
label: Text {
text: control.currentText
}
}
model: ListModel {
ListElement { text: "green" }
ListElement { text: "dark-green" }
ListElement { text: "blue" }
}
}
AppText {
x: 0; y: 90; text: "text " + comboBox1.currentText
}
}
}
Component {
id: lastPage
Page {
navigationBarHidden: true
AppText { text: qsTr("last page") }
SimpleButton{
x: 220; y: 0; onClicked: page.navigationStack.push(page)
}
AppText {
x: px(50); y: px(90); text: "text " + comboBox1.currentText
}
}
}
}

->我需要从设置页面的组合框中获取选定的列表元素,并在 id 为 lastPage 的组件中使用它

任何帮助将不胜感激

实际上我不知道您在这里使用的元素是什么(应用程序,导航堆栈等),但通常结构可以如下所示:

Window {
visible: true   
width: 400
height: 300
id: root
property color someColor: "green"
Row {
id: element1
anchors.centerIn: parent
Rectangle {
width: 100
height: 100
color: root.someColor
}
Rectangle {
id: element2
width: 100
height: 100
color: "yellow"
MouseArea {
anchors.fill: parent
onClicked: {
root.someColor = "blue"
}
}
}
}
}

element1取决于其父项/顶级项中的某些属性,这些属性始终在范围内。这种结构在QML中称为property bindings,可以通过多种方式完成(例如使用绑定,适用于动态元素)。element2还可以访问/更改属性,因此从element2更改属性会立即影响element1。当您想从root访问element1并且element1不在范围内,或者不存在或在这种情况下会使应用程序崩溃的任何其他内容时,这也解决了问题。

相关内容

  • 没有找到相关文章

最新更新