gpt4 book ai didi

带有小键盘键的 C++ Qt QShortcut

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:40:06 30 4
gpt4 key购买 nike

QShortcut可以轻松地将 QShortcutEvent(按键、组合或序列)连接到插槽方法,例如:

QShortcut *shortcut = new QShortcut( QKeySequence(Qt::Key_7), this, 0, 0, Qt::ApplicationShortcut);

(提示:对于数字键,QSignalMapper 可用于将 QShortcut 的 activated() 信号映射到带有 int 参数的 Slot。

但是,在此示例中,使用 NumLock(启用 numpad),两个“7”键都将触发快捷方式的 activated() 信号。

除了过滤或重新实现小部件的 keyPressEvent 之外,有没有办法检测不同的键?并检查 QKeyEvent::modifiers()对于Qt::KeypadModifier

进一步挖掘,我发现

QTBUG-20191 Qt::KeypadModifier does not work with setShortcut链接到 patch that has been merged into 4.8 in Sept. 2012并带有 test case使用

button2->setShortcut(Qt::Key_5 + Qt::KeypadModifier);

这对我在 Qt 4.8.1 上的 QShortcut 不起作用,即使用(添加)修饰符标志都无法识别“7”键。

所以我想最快的方法是安装一个过滤器来检测修改器并让所有其他 keyEvents 由默认实现处理以便与 QShortcut 一起使用?

最佳答案

你可以使用Qt.KeypadModifier,例如[Python]:

def keyPressEvent(self, event):
numpad_mod = int(event.modifiers()) & QtCore.Qt.KeypadModifier
if event.key() == QtCore.Qt.Key5 and numpad_mod:
#Numpad 5 clicked

关于带有小键盘键的 C++ Qt QShortcut,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17718743/

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