星球的眼睛 发表于 2025-1-1 01:45:34

关于Qt快捷键的实现原理

Qt快捷键相关的类包括

1.基于QShortcut的方式去做全局快捷键
QKeySequence/ QShortcut /QAction/QShortcutMap
QKeySequence表示对于键盘的ID,末了可以生存四个键盘ID的组合,有一组枚举key_A…。初始化的化的时间既可通过枚举表示键盘ID,也可以通过字符串表,通过字符串表示的时间对字符串解码,天生对应的键盘ID。
QShortcut 表示一个激活快捷键动作的对象,继承与QObject,创建完这个对象,设置完对应的QKeySequence后,当触发快捷键后,能发送active信号通知其他的对象。QShortcut拥有除键盘ID以外的其他ID,包括对应的窗体,以及能激发快捷键的属性(应用全局,窗口,控件,控件及其子控件)。
QShortcutMap 是全局Application的成员变量,每界说一个QShortcut对象,就会在构造函数中调用redoGrab函数,将自己插入到全局QShortcutMap中。QShortcutMap中tryShortcutEvent函数负责接收KeyEvent,做变乱的匹配,各种条件的判断。然后包装成QShortEvent发送到QShortcut中去。QShortcut中接收到了QShortEvent变乱,然后再做条件判断,发送active信号。
QAction和QShortcut原理上基本一样,也有QKeySequence,初始化,将QKeySequence
生存到全局的QShortMap中,变乱转发后,再event里面接收QShortcutEvent,然后激活actived()函数,触发信号。

2.在控制的变乱函数中捕捉键盘变乱。
自己通过控件的KeyPressEvent去监听,然后去判断处置惩罚对应的变乱逻辑。缺点是控件必须有焦点,能接收到对应的变乱。
https://i-blog.csdnimg.cn/direct/77f9cb111dfc46f38c6f3a6d4e93d5e1.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 关于Qt快捷键的实现原理