gpt4 book ai didi

qt - 处理按键事件 Ctrl+Tab 和 Ctrl+Shift+Tab

转载 作者:行者123 更新时间:2023-12-04 11:41:06 26 4
gpt4 key购买 nike

我要处理两个关键事件Ctrl + TabCtrl + Shift + Tab为了在我的应用程序中的选项卡之间切换(分别为“前进”和“后退”)。但是,这似乎没有按预期工作。

这是我当前的代码(最小示例):

import QtQuick 1.1

Item {
width: 100
height: 100

focus: true

Keys.onPressed: {
if(event.modifiers & Qt.ControlModifier) {
if(event.key === Qt.Key_Tab) {
if(event.modifiers & Qt.ShiftModifier)
console.log('backward')
else
console.log('forward')
}
}
}
}

我用 qmlviewer 运行了这段代码(Qt 版本 4.8.2)

按下 Ctrl 时输出+ Tab :
forward
forward

按下 Ctrl 时输出+ Shift + Tab :

none



所以我看到了两个错误:前一个键序列被处理了两次,而另一个根本没有。
  • 编辑:另一个根本没有处理的原因解决了,见评论。

  • 为什么会发生这种情况,我该如何解决?

    注意:我已经在我的应用程序中使用了 Qt Components for Desktop,所以如果您知道需要此模块的解决方案就可以了。

    最佳答案

    您必须接受该事件,否则该事件将传播给 parent ,直到它被接受。以下代码对我有用。

    Item {
    width: 100
    height: 100

    focus: true

    Keys.onPressed: {
    if(event.modifiers && Qt.ControlModifier) {
    if(event.key === Qt.Key_Tab) {
    console.log('forward')
    event.accepted = true;
    }
    else if(event.key === Qt.Key_Backtab) {
    console.log('backward')
    event.accepted = true;
    }
    }
    }
    }

    编辑:这种行为让 parent 可以处理 child 无法处理的事件,例如热键。

    希望这可以帮助!

    关于qt - 处理按键事件 Ctrl+Tab 和 Ctrl+Shift+Tab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12830788/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com