【问题标题】:QML Tableview display value from selected rowQML Tableview显示选定行的值
【发布时间】: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 处理程序中设置它。
  • 不,不...试试我的:-)

标签: qt qml tableview


【解决方案1】:

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

currentRow : int

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

在你的情况下:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    相关资源
    最近更新 更多