在QML中,当我使用菜单QML类型时,event.modifiers不工作在Keys.onPressed中,但是在注释菜单类型之后,它就起作用了。我做错了什么?是否有与菜单QML类型相关的错误?我正在使用QT5.4.0。
Rectangle {
id: main
width: 600
height: 300
Menu {
id: menu
title: "Edit";
MenuItem { text: "Copy";shortcut: "Ctrl+C" }
MenuItem { text: "Paste";shortcut: "Ctrl+V" }
MenuItem { text: "Select" }
MenuItem { text: "Select all";shortcut: "Ctrl+A" }
MenuSeparator { }
MenuItem { text: "Delete";shortcut: "Delete" }
MenuItem { text: "Delete all" }
MenuSeparator { }
MenuItem { text: "Auto arrange" }
}
Keys.onPressed: {
if((event.key === Qt.Key_C) && (event.modifiers & Qt.ControlModifier))
{
console.log("Ctrl+C is pressed")
}
}
MouseArea{
anchors.fill : parent;
acceptedButtons: Qt.LeftButton | Qt.RightButton
onClicked: {
main.focus = true;
if(mouse.button === Qt.RightButton){
menu.popup();
}
}
}
}发布于 2015-11-09 15:56:06
Menu不是视觉原语 (QQuickItem),因此不会接收事件:
所有可视化原语都支持通过键附加属性进行密钥处理。
当前使用的shortcut属性是提供菜单快捷方式的正确方法。您还可以分配一个action。
若要响应被触发的快捷方式,请使用triggered信号。
https://stackoverflow.com/questions/33612143
复制相似问题