在TableView上调用Keys.onPressed两次

时间:2016-02-16 05:35:24

标签: 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;
        }
    }
}

我得到的输出是:

  

qml:按下空格

     

qml:按下空格

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

1 个答案:

答案 0 :(得分:-1)

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