QML Tableview显示选定行的值

Posted

技术标签:

【中文标题】QML Tableview显示选定行的值【英文标题】:QML Tableview display value from selected row 【发布时间】:2017-09-23 12:17:38 【问题描述】:

我有一个表格视图,我想在一行的 onPressAndHold 上打开一个对话框,并显示“orderNumber”行的单元格的值。 但我收到错误消息:ReferenceError: row is not defined

TableView 
    id: tableviewopenorders
    height: 180
    clip: false
    visible: true

    onPressAndHold: oocanceldialog.open()


    TableViewColumn 
        id: orderNumberColumn
        role: "orderNumber"
        title: "Order Number"
    

    model: openordersModel


ListModel 
    id: openordersModel

    ListElement 
        orderNumber: "1223455"

    
    ListElement 
        orderNumber: "111111"

    



Dialog 
    id: oocanceldialog
    title: "Cancel confirmation"
    standardButtons: Dialog.Ok | Dialog.Cancel
    x: (parent.width - width) / 2
    y: (parent.height - height) / 2
    Label 
        text: openordersModel.get(row).orderNumber

    

    onAccepted: console.log("Ok clicked")
    onRejected: oocanceldialog.close()

【问题讨论】:

我不熟悉这种语言,但直观地说,您的代码中似乎没有任何内容可以在表达式 openordersModel.get(row).orderNumber 中设置 row。那是导致错误的行吗?是否有用于单击单个行与单击表本身的事件处理程序?也许尝试寻找类似的东西? 是的,这就是导致错误的行。例如,当我将onPressAndHold: oocanceldialog.open() 替换为onPressAndHold:console.log(openordersModel.get(row).orderNumber) 时,我得到了正确的输出,当我按住第一行时,我得到了 1223455,当我按住第二行时,我得到了打印的 111111。但是当它在 tableview 上下文之外时,这条线不起作用 我想知道您认为对话框将如何获得该行。将property int row 添加到对话框中,然后在打开之前从 pressandhold 处理程序中设置它。 不,不...试试我的:-) 【参考方案1】:

row存在于onPressAndHold的上下文中,所以它不存在于它之外,要获取行我们必须使用TableViewcurrentRow属性:

currentRow : int

视图的当前行索引。默认值为-1,表示没有选择行。

在你的情况下:

Label 
    text: openordersModel.get(tableviewopenorders.currentRow).orderNumber

【讨论】:

以上是关于QML Tableview显示选定行的值的主要内容,如果未能解决你的问题,请参考以下文章

Qt5 - 在 QML TableView 中显示动态数据模型

QML TableView:数字格式

如何设置与选定行相邻的 TableView 行的样式?

如何在分段控制器内的 tableView 中保存选定行的状态?

从datagridview中选定行的值的ID中获取名称

如何在Qt 的tableview中根据某一单元格的数据来设置该行的字体颜色或背景色。