在TableView上调用Keys.onPressed两次

fol*_*bis 5 qt qml qtquick2

我在使用时发现了一些奇怪的行为TableView.我们假设我们有以下代码:

TableView {
    anchors.fill: parent
    TableViewColumn { title: "column1"; role: "col1" }
    TableViewColumn { title: "column2"; role: "col2" }
    TableViewColumn { title: "column3"; role: "col3" }
    model: ListModel {
        ListElement { col1: "value1"; col2: "value2"; col3: "value3" }
        ListElement { col1: "value4"; col2: "value5"; col3: "value6" }
        ListElement { col1: "value7"; col2: "value8"; col3: "value9" }
    }
    Keys.onPressed: {
        if(event.isAutoRepeat)
            return;
        if(event.key === Qt.Key_Space) {
            console.log("Space pressed");
            //event.accepted = true;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

qml:空间紧迫

qml:空间紧迫

这意味着Keys.onPressed由于某种原因被称为两次.如果我设置event.acceptedtrue它按预期工作,但有时我只是想检查按下按钮不接受他们.例如,如果按下向上箭头,我不想接受它.在这种情况下,处理程序被调用两次.

小智 -1

如果您将 Keys.onPressed 代码放在 TableView 范围之外,它会正常工作,看起来像 Qt bug...