QtQuick2快捷方式未触发

时间:2018-01-18 10:17:19

标签: qt qml qt5 qtquick2

我正在使用Qt 5.8.0向QtQuick Controls2应用程序添加键盘快捷键,我想使用QKeySequence控制一个标签栏,如下所示:

ApplicationWindow {
  ...
  Shortcut {
      sequence: StandardKey.NextChild
      onActivated: tabBar.nextTab()
  }

  Shortcut {
      sequence: StandardKey.PreviousChild
      onActivated: tabBar.previousTab()
  }
}

TabBar {
  id: tabBar
  ...
  function nextTab() {
    console.log("next tab")
    if((currentIndex + 1) < contentChildren.length)
      currentIndex += 1
    else
      currentIndex = 0
  }

  function previousTab() {
    console.log("previous tab")
    if((currentIndex - 1) > 0)
      currentIndex -= 1
    else
      currentIndex = contentChildren.length - 1
  }
}

这适用于使用Ctrl + Tab的NextChild序列,但PreviousChild序列不起作用。我检查了documentation,它声称在Windows中,previousChild序列是Ctrl + Shift + Tab,就像我预期的那样。

我添加了一个console.log()来检查函数是否被调用,而不是。 由于我对两个函数使用相同的代码,我只能假设键序列错误,或者我还缺少其他什么?

1 个答案:

答案 0 :(得分:1)

这似乎是一个Qt Bug https://bugreports.qt.io/browse/QTBUG-15746

或者,您可以将previousChild快捷方式定义为

Shortcut {
    sequence:  "Ctrl+Shift+Tab"
    onActivated: {
        tabBar.previousTab()
    }
}

除此之外,您的previousTab实施

中存在一个小索引错误
function previousTab() {
    console.log("previous tab")
    if(currentIndex > 0) // Instead of (currentIndex - 1) > 0
        currentIndex--
    else
        currentIndex = contentChildren.length-1
}