QtQuick快捷方式中的处理修饰符

时间:2019-02-01 12:53:37

标签: qml qtquick2 qt-quick qtquickcontrols2 qtquickcontrols

我有一个简单QtQuick应用,说

import QtQuick 2.12
import QtQuick.Window 2.12

Window {
    visible: true
    width: 640
    height: 480
    Shortcut {
        sequence: "i"
        context: Qt.ApplicationShortcut
        onActivated: {
            console.log("activated!")
        }
    }
}

当我按下“ I”键时,我看到“已激活!”在控制台中。但我的问题是我的应用程序应该响应Alt键(无任何主键)。当我将“ sequence”属性设置为“ Alt”(或“ Ctrl”,“ Shift”等任何修饰符)时,什么也不会发生。那么,有什么方法可以只处理快捷键中按下修饰符的情况?

我认为我不能使用Keys.onPressed,因为无论现在重点放在哪个项目上,我都想处理Alt键

3 个答案:

答案 0 :(得分:1)

如果您正在测试Windows,我认为没有办法在Windows上实现。这对于我的应用程序也是一个问题,用户应该能够按住Alt才能使用颜色选择器。尽管在macOS和Ubuntu上也能正常工作。

我的猜测是,它与alt是用于在Windows上激活菜单项的全局快捷方式有关。尽管对于Ubuntu来说也是如此,并且在这里也可以正常工作。

例如,这似乎是一个问题。也可以在Windows上使用Photoshop,并有几种常见的解决方法:

答案 1 :(得分:0)

Shortcut相比,这需要一些不同的方法,您可以使用附加属性Keyshttp://doc.qt.io/qt-5/qml-qtquick-keyevent.html

Item {
    focus: true
    Keys.onPressed: { 
        if (event.modifiers & Qt.AltModifier)
             console.log("alt activated")
    }
}

免责声明:由于修饰符有些不同并且可能不会触发pressed信号,因此有少许机会无法使用。在这种情况下,我希望至少已将您指向正确的方向

答案 2 :(得分:0)

文档显示您可以编写sequence: "Alt+i",但目前无法尝试。...

祝你愉快