标题:捕获录制快捷键的LineEdit——ShortcutGrabberEdit
作者:roywillow
日期:2013-05-11 18:27
内容:
一个用来录制快捷键的小组件,获得焦点后,用户按下自己需要的快捷键,就能将其录制并显示出来。
目前尚存在一些问题:
1.Linux下没有测试,特别是对ShortcutGrabberEdit::keyReleaseEvent()这部分,是暂时按照windows下的方式处理的
2.Windows下Win键(Meta键)首先会被系统截获,没被截获的快捷键才会发送进来,但是效果不对,松开所有键确认快捷键时没有信号发出
3.NumLock点亮的时候QKeyEvent::modifiers()里会包含KeypadModifier,但是这个modifier无法被Qt正确显示出来,并且似乎表现还挺诡异,所以就直接把它滤去后再处理,不清楚这样是不是妥当
4.我究竟是叫它ShotcutGrabberEdit好呢,还是KeySequenceGrabbderEdit好呢,还是啥呢啥呢啥呢啥呢(强迫症中)
如果各位发现或修复了什么bug,或者有更简洁更可靠的实现方法,请务必告诉我!务必!
代码各位随便使用,能给俺一个credit最好,如果能进天池的话俺立马泪奔去=w=
#1 [roywillow 05-11 18:28]
呃……图片后的那一串神秘代码是论坛的bug吗?
#2 [ppdayz 05-11 20:00]
应该是点击图片的动作吧,html代码。。
#3 [roywillow 05-12 15:21]
稍作修改,处理了一下KeypadModifier的问题
#4 [luckyyoung 07-07 14:46]
我用Qt4.8.4+MinGW4.4.0编译了下,出现这种问题怎么办?:
D:\Qt\QtProgram\ShortcutGrabber\shortcutgrabberedit.h:15: 错误:'void ShortcutGrabberEdit::grabFinished(const QKeySequence&)' is protected
……
D:\Qt\QtProgram\ShortcutGrabber\widget.cpp:20: 错误:expected primary-expression before '[' token
……
#5 [XChinux 07-07 15:19]
void ShortcutGrabberEdit::grabFinished(const QKeySequence&)
protected方法,不能直接从外部调用。