实现软键盘
假如我的窗口上有两个很多个lineEdit,很多个button(1-9,a-z,A-Z)
要求,我点击button时就在我选中的那个lineEdit里写上对应的按键字母,跟软键盘类似的。该如何实现?
我的想法是点击某个button时,就触发相应的键盘按下事件,但是不知道该怎么写,能不能给我举个例子?
谢谢! 键盘事件 触发
[解决办法]
方法很多
从窗口部件的焦点上来考虑的话,
1,遍历你的所有LineEdit,如果某个的hasEditFocus()函数返回真,则说明你点中了它。
单从鼠标按键上来考虑的话,
1,最直接的就是用QObject::eventFilter来处理了,使用起来很简单,请参考Qt帮助文档。
2,当然你也可以从QLineEdit派生一个子类MyLineEdit出来,然后重载mouseReleaseEvent函数,触发后在里面将自己的信息(比如this指针)emit给主界面就OK了,当然这需要一个自定义信号,不懂的话自己再多学习下吧。
如果你只想移动鼠标,鼠标停留在哪个LineEdit上就选中的话,那么从QLineEdit派生一个子类MyLineEdit出来,然后重载enterEvent函数和leaveEvent函数。当鼠标移动到你的LineEdit上时,会触发enterEvent的调用,你在里面setFocus(true),然后emitEnter(this)给主界面告知现在自己已经被选中,主界面在相应的槽里m_pLineEdit = pLineEdit ; 当你鼠标离开刚才的这个LineEdit时,会触发leaveEvent的调用,你在里面setFocus(false),然后emitLeave(this)给主界面告知自己未被选中,主界面在相应的槽里m_pLineEdit=NULL即可。当m_pLineEdit != NULL时,处理你的PushButton消息