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
的上下文中,所以它不存在于它之外,要获取行我们必须使用TableView
的currentRow
属性:
currentRow : int
视图的当前行索引。默认值为-1,表示没有选择行。
在你的情况下:
Label
text: openordersModel.get(tableviewopenorders.currentRow).orderNumber
【讨论】:
以上是关于QML Tableview显示选定行的值的主要内容,如果未能解决你的问题,请参考以下文章
Qt5 - 在 QML TableView 中显示动态数据模型