这是我代码中的例外:
Keys.onPressed: {
if ((event.modifiers & Qt.AltModifier) && (event.modifiers & Qt.ControlModifier) && event.key === Qt.Key_Plus) {
zoom(true, false);
}
if ((event.modifiers & Qt.AltModifier) && (event.modifiers & Qt.ControlModifier) && event.key === Qt.Key_Minus) {
zoom(false, false);
}
}
Shortcut {
id: zoomInX
sequence: StandardKey.ZoomIn
onActivated: {
zoom(true, true);
}
}
Shortcut {
id: zoomOutX
sequence: StandardKey.ZoomOut
onActivated: {
zoom(true, false);
}
}
function zoom(zoomIn, zoomX) {
...
}
可以从Keys.onPressed代码中很好地调用zoom
函数。
但是当从快捷方式的zoom
代码调用onActivated
函数时,我得到以下消息:
... W:未知:... ReferenceError:缩放未定义
这是为什么?我该如何解决?
我曾想过,由于“缩放”功能可用于“键”项,因此它也可用于Shortcut
项,并且通过闭包也可用于onActivated
代码。
从文档中
在QML中,组件实例将其组件作用域连接到 形成范围层次结构。组件实例可以直接访问 他们祖先的组成范围。
答案 0 :(得分:1)
正如您指出的,您必须使用祖先的ID来标识该功能,如果在祖先的范围内调用该函数,则可以省略该ID。如标识所示,这些是必需的,因为每个项目都可以定义具有相同名称的功能。