QML TableView:如何绑定到 selection.onSelectionChanged()

Posted

技术标签:

【中文标题】QML TableView:如何绑定到 selection.onSelectionChanged()【英文标题】:QML TableView: how to bind to selection.onSelectionChanged() 【发布时间】:2015-08-30 00:46:17 【问题描述】:

我知道如何绑定到像 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()
        
    

但不幸的是,当我单击表格中的一行时,TextArea 不会更新。如何响应选择更改?

【问题讨论】:

【参考方案1】:

啊,所以我没有 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()
        
    

【讨论】:

以上是关于QML TableView:如何绑定到 selection.onSelectionChanged()的主要内容,如果未能解决你的问题,请参考以下文章

单击列时在 Qml TableView Header 中查找单击事件

QML TableView 鼠标区域不会将点击传播到选择模型

如何有条件地禁用 QML 绑定到 C++ 后端?

QML TableView + QAbstractTableModel - 如何从 QML 编辑模型数据?

QML:如何在 TreeView 和 TableView 禁用边框?

如何使用pyQt在qml中的python文件中显示QAbstractTableModel