QKeyEvent来自于键盘的按键事件,shortcut是快捷方式,这里我用setShortcut函数给button设置了一个快捷方式,现在我想比较QKeyEvent的按键与button的shortcut是否相同。

QKeyEvent主要是通过modifiers和key这两个函数来获取当前的按键,shortcut使用QKeySequence来表示按键信息的。

根据QKeySequence的构造函数将QKeyEvent转换成QKeySequence,但是直接跟shortcut相比的话不是我们想要的结果。后来通过toString来比较他们的值发现两种表示格式是不一样的,但是主要内容是一致的,所以这里做了一个处理,让他们的格式一致。

常见的组合键判断都是没问题的,不排除特殊的可能有问题。

QKeyEvent *e;
// ...
QKeySequence curKey(e->modifiers() != 0 ? e->modifiers() : e->key(), e->modifiers() != 0 ? e->key() : 0);
QString curStr = curKey.toString();
curStr = curStr.remove(" ").split(",").join("");
if (curStr == button->shortcut().toString()) {
    // 相同
}

评论列表


Folly 说道:
2018-09-22 05:25
这个实现有点奇怪,Qt为什么没有统一的比对方法。

发表评论

电子邮件地址不会被公开。 必填项已用*标注