关于Qt快捷键的实现原理

打印 上一主题 下一主题

主题 1315|帖子 1315|积分 3945

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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去监听,然后去判断处置惩罚对应的变乱逻辑。缺点是控件必须有焦点,能接收到对应的变乱。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

星球的眼睛

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表