Shorcut StandardKey.PreviousChild不在linux上工作

时间:2017-01-04 19:01:26

标签: linux qt qml qtquick2

我正在尝试 Ctrl + Shift + Tab 快捷方式,但它无效。 Linux上的Qt 5.7。一个显示问题的简单示例:

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Shortcut {
        sequence: StandardKey.PreviousChild
        onActivated: {
            console.log("prev child")
        }
    }

    Shortcut {
        sequence: StandardKey.NextChild
        onActivated: {
            console.log("next child")
        }
    }

}

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我认为你没有做错任何事。它对我也不起作用。我读了这个http://doc-snapshots.qt.io/qt5-5.7/qkeysequence.html#keyboard-layout-issues但仍然无法解决它。

我无法在全局键盘设置上找到Ctrl+Shift+Tab的快捷键组合。

当我直接硬编码下面的快捷键序列sequence: "Ctrl+Shift+Tab"时,以下hack在我的结尾处起作用。

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    // Does not work
    Shortcut {
        sequence: StandardKey.PreviousChild
        onActivated: {
            console.log("prev child")
        }
    }

    // Works but it is a hack
    Shortcut {
        sequence: "Ctrl+Shift+Tab"
        onActivated: {
            console.log("hard coded pre child")
        }
    }

    Shortcut {
        sequence: StandardKey.NextChild
        onActivated: {
            console.log("next child")
        }
    }
}