使用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
,它会按预期工作,但有时我只想检查按下的按钮而不接受它们。例如,如果按下向上箭头,我不想接受它。在这种情况下,处理程序被调用两次。
答案 0 :(得分:-1)
如果将Keys.onPressed代码放在TableView范围之外,它可以正常工作,看起来像Qt bug ......