删除文章

确定要删除这篇文章吗?

取消
确定

比较QKeyEvent和shortcut的按键信息

     阅读(672)  2018-09-03 17:34:00

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
这个实现有点奇怪,Qt为什么没有统一的比对方法。
Keep it simple,stupid
文章数
296
总访问量
399499
今日访问
1474
最近评论

xuehaoyun : 很不错,来围观一下
tujiaw : 抱歉csdn code服务关闭了,这个代码我也找不到了
于淞 : 你好,这个文章的源码能分享一下吗,songsong9181@163.com,谢谢了 上面的写错了
于淞 : 你好,这个文章的源码能分享一下吗,838106303@163.com,谢谢了 上面的链接不能用了
tujiaw : 多谢多谢
essaypinglun college-paper.org : 很好的博客,赞赞
Folly : 这个实现有点奇怪,Qt为什么没有统一的比对方法。
过多s : alert("hello, world!")
tujiaw : 还不错哦
回到顶部