最近实现一个嵌入式平台的输入法,上网找了下资料,不算很多,只是写论文。根据论文的架构,自己一点一点地实现功能,目前已经能够支持数字、英文、符号、拼音。没有联想,但是对于嵌入式平台,已经足够了。最后想实现输入法的框跟随光标移动的功能。移动输入法的框很简单,但是获得当前光标的坐标费了我很大力气。
在网上我没有找到类似的文章,完全是自己一点一点摸索出来的。
想要直接获得光标的坐标是不可能的,所以我分为了两步,
一、获得当前光标所在的窗口
m_cursorPos = (QApplication::activeWindow ())->mapToGlobal(m_cursorPos);
这句话勉强符合我的要求,因为输入法启动时,肯定高亮在输入框上,而我获得当前激活窗口也因该是输入框的父窗口。
需要注意的是一个类似的函数focusWidget
QApplication::focusWidget ()
Returns the application widget that has the keyboard input focus, or 0 if no widget in this application has the focus.
QApplication::activeWindow ()
Returns the application top-level window that has the keyboard input focus, or 0 if no application window has the focus. There might be an activeWindow() even if there is no focusWidget(), for example if no widget in that window accepts ke