QML从选定行中显示表值
问题描述:
我有一个tableview,我想在一行上打开一个onPressAndHold对话框,并显示“orderNumber”行的单元格的值。 但我得到的错误消息:的ReferenceError:行不定义QML从选定行中显示表值
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()
}
答
row
存在的onPressAndHold
范围内,所以也没有在其外部存在,让行,我们必须使用currentRow
属性的TableView
:
currentRow : int
The current row index of the view. The default value is -1 to indicate that no row is selected.
你的情况:
Label {
text: openordersModel.get(tableviewopenorders.currentRow).orderNumber
}
+0
非常感谢你,这个作品完美! –
我对这种语言并不熟悉,但直观上,它看起来像代码中没有任何内容会在表达式'openordersModel.get(row).orderNumber'中设置'row'。这是导致错误的线?是否有一个事件处理程序用于单击单个行并单击该表本身?也许尝试寻找那样的东西? – killthrush
是这就是导致错误的行。例如,当我用'onPressAndHold:console.log(openordersModel.get(row).orderNumber)替换'onPressAndHold:oocanceldialog.open()'时,我得到了正确的输出结果,当我按住第一行时得到了1223455,当我按住第二行,然后我得到了111111打印。但是,当它在tableview上下文外部时,这行不起作用 –
我想知道你怎么认为对话框会得到该行。将'property int row'添加到对话框中,然后在打开它之前将它从pressandhold处理程序中设置。 – folibis