QML TableView:如何绑定到 selection.onSelectionChanged()
QML TableView: how to bind to selection.onSelectionChanged()
我知道如何绑定到像 onClicked
这样的根 TableView 信号,但是由于 onSelectionChanged
是其 selection
属性 的信号,我不确定如何绑定绑定到它。
我以为我肯定可以使用 Connections
绑定到它,但是下面的代码不起作用:
编辑:Connections
确实有效,问题是无关的错误(见我自己的回答)
TextArea {
id: messageDetailTextArea
readOnly: true
font: messageListDialog.font
function update() {
var selectionText = ''
messagesTable.selection.forEach(function(rowIndex) {
var row = model.get(rowIndex)
if (row && row.message) selectionText += row.message
})
text = selectionText
}
Connections {
target: messagesTable.selection
onSelectionChanged: update()
}
}
但不幸的是,当我单击 table 中的一行时,TextArea
没有更新。我如何响应选择更改?
啊,所以我没有 model
和对 update()
的正确调用。这有效:
TextArea {
id: messageDetailTextArea
readOnly: true
font: messageListDialog.font
function update() {
var selectionText = ''
messagesTable.selection.forEach(function(rowIndex) {
var row = messagesTable.model.get(rowIndex)
if (row && row.message) selectionText += row.message
})
text = selectionText
}
Connections {
target: messagesTable.selection
onSelectionChanged: messageDetailTextArea.update()
}
}
我知道如何绑定到像 onClicked
这样的根 TableView 信号,但是由于 onSelectionChanged
是其 selection
属性 的信号,我不确定如何绑定绑定到它。
我以为我肯定可以使用 Connections
绑定到它,但是下面的代码不起作用:
编辑:Connections
确实有效,问题是无关的错误(见我自己的回答)
TextArea {
id: messageDetailTextArea
readOnly: true
font: messageListDialog.font
function update() {
var selectionText = ''
messagesTable.selection.forEach(function(rowIndex) {
var row = model.get(rowIndex)
if (row && row.message) selectionText += row.message
})
text = selectionText
}
Connections {
target: messagesTable.selection
onSelectionChanged: update()
}
}
但不幸的是,当我单击 table 中的一行时,TextArea
没有更新。我如何响应选择更改?
啊,所以我没有 model
和对 update()
的正确调用。这有效:
TextArea {
id: messageDetailTextArea
readOnly: true
font: messageListDialog.font
function update() {
var selectionText = ''
messagesTable.selection.forEach(function(rowIndex) {
var row = messagesTable.model.get(rowIndex)
if (row && row.message) selectionText += row.message
})
text = selectionText
}
Connections {
target: messagesTable.selection
onSelectionChanged: messageDetailTextArea.update()
}
}