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() 
} 
+0

我对这种语言并不熟悉,但直观上,它看起来像代码中没有任何内容会在表达式'openordersModel.get(row).orderNumber'中设置'row'。这是导致错误的线?是否有一个事件处理程序用于单击单个行并单击该表本身?也许尝试寻找那样的东西? – killthrush

+0

是这就是导致错误的行。例如,当我用'onPressAndHold:console.log(openordersModel.get(row).orderNumber)替换'onPressAndHold:oocanceldialog.open()'时,我得到了正确的输出结果,当我按住第一行时得到了1223455,当我按住第二行,然后我得到了111111打印。但是,当它在tableview上下文外部时,这行不起作用 –

+0

我想知道你怎么认为对话框会得到该行。将'property int row'添加到对话框中,然后在打开它之前将它从pressandhold处理程序中设置。 – folibis

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

非常感谢你,这个作品完美! –