设计自己的输入法需要继承QWSInputMethod。
需要重新实现:
    virtual void updateHandler ( int type );    
//type值是枚举变量Update, FocusIn, FocusOut, Reset, Destroyed
分别对应:拥有焦点的控件发生变化(例如QLineEdit的位置发生变化),需要输入法做出相应的改变(软键盘位置)
         新控件开始拥有焦点。(需要弹出输入法)
         原有控件失去焦点(需要关闭输入法)
         重启输入法(可以在系统语言发生变化时,重新配置输入法)
         输入法销毁(基本用不到)

void MyInputMethod::updateHandler(int type)
{switch(type){case Update://update输入法widgetbreak;case FocusIn:        {            //输入控件获得焦点时,启动输入法QWidget *focusWidget = QApplication::focusWidget();if(focusWidget && focusWidget->focusPolicy()==Qt::StrongFocus &&mActive ==false){//弹出输入法相关的widgetShowKeyBoard();}}break;case FocusOut:if(mActive){//关闭输入法相关的widget}break;case Reset://reset inputmethodbreak;case Destroyed:break;}
}

不同用户的KeyBoard实现方法不一样,同时在Keyboard中继承相应的输入法。英文软键盘可参考:
http://blog.csdn.net/tandesir/article/details/7283158#comments
另外,再实现2个槽函数,用于接受软件盘或者输入法输出的字符(假如当用户按键A后,字母A需要被MyInputMethod知道)

void MyInputMethod::CommitCharacter(QString str)
{//将文字送入输入框内JYZ_PrintLog("%s",str.toLocal8Bit().constData());if(str.length()==0 && mPreEditString.length())sendCommitString(mPreEditString);elsesendCommitString(str);mPreEditString.clear();    if(mInputmethodPanel)mInputmethodPanel->Reset();
}
void MyInputMethod::PreeditCharacter(QString str)
{//将候选送入输入框内,同时显示下滑线mPreEditString=str;sendPreeditString(str,0);
}

为了让得到的字符或者字符串显示到编辑框中可以使用 sendCommitString和sendPreeditString
CommitString和PreeditString的区别是什么?
在T9输入法中,输入数字2得到字母a,再输入数字2得到字母b。a和b显示时带有下划线且闪烁。这是调用sendPreeditString实现的。PreeditString,顾名思义预编辑的。
当连续2次输入数字2后,等待一段时间后,PreeditString 'b'需要变为CommitString 'b'。这是调用sendCommitString实现的。
上面3个函数实现后,整个输入法的框架也就搞定了。剩下的就是:如何显示键盘,如何绑定输入法并输出正确的PreeditString和CommitString了。
当然,为了让QT运行时能够识别,需要进行注册:
QWSServer::setCurrentInputMethod(new MyInputMethod());

QT 嵌入式 输入法 软键盘相关推荐

  1. Java调用虚拟键盘输入法_Android 点击屏幕空白处收起输入法软键盘(手动打开)...

    很多时候,我们在使用应用时,会出现输入法软键盘弹出的问题,通常情况下,我们默认会使用户点击返回键或者下一步对软键盘进行隐藏.为了更好的体验,我们可以实现当用户使用完毕软键盘时.点击屏幕空白区域即可实现 ...

  2. Android小技巧 自动关闭输入法软键盘

    一.简介 作用:获取编辑框的最大长度,当输入后文本长度等于最大长度则关闭软键盘. 使用场景:手机号,固定位数的密码,验证码 二.代码部分 工具类 ViewUtil.java public class ...

  3. android 输入法 确定按钮,Android项目:输入法软键盘显示/隐藏的监听和控制,InputMethodManager用法研究...

    在项目开发中,用到编辑框的地方经常涉及到要监听或者控制软键盘的显示/隐藏状态.本以为这是很容易解决的一个小问题,没想到当初碰到这个问题才明白还得花点小心思才能整好.现将针对软键盘的显示/隐藏状态的监听 ...

  4. 安卓输入法弹出后css横屏,mui开发安卓端,输入法软键盘导致css横屏样式判断触发...

    mui开发安卓端,输入法软键盘导致css横屏样式判断触发 mui开发安卓端,输入法软键盘导致css横屏样式判断触发 css 横屏媒体查询 @media screen and (orientation: ...

  5. Android点击空白区域,隐藏输入法软键盘

    很多时候,我们在使用应用时,会出现输入法软键盘弹出的问题,通常情况下,我们默认会使用户点击返回键或者下一步对软键盘进行隐藏.为了更好的体验,我们可以实现当用户使用完毕软键盘时.点击空白区域即可实现隐藏 ...

  6. 案例分享:Qt中英文输入软键盘(支持Qt4、Qt5、触摸和键鼠混合输入等)

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/111831179 长期持续带来更多项目与技术分 ...

  7. Android开发笔记(一百四十八)自定义输入法软键盘

    手机上输入文字,都是通过系统自带的软键盘,这个软键盘可以是Android自带的,也可以是第三方软键盘如搜狗输入法.多数情况下面,系统自带的软键盘已经够用了,可是总有少数情况,系统软键盘无法满足开发者的 ...

  8. android 手机键盘输入法,如何控制输入法软键盘的出现方式

    调用 open(null);/** * 当前弹出则关闭 * 否则弹出 * @param v */ @SuppressWarnings("static-access") public ...

  9. 基于MDKA5D31-EK_T70开发板的QT示例-demo06:软键盘

    By Mcuzone 硬件平台:MDKA5D31-EK_T70开发板  QT版本:4.8.5  简要说明:本示例主要演示QT下调用相应的API制作软键盘及其使用效果. 应用程序运行效果: 初始化后设置 ...

最新文章

  1. Spring cloud zuul跨域(一)
  2. 浙江树人学院计算机专业好吗,浙江树人学院有哪些专业及什么专业好
  3. python 使用进程池Pool进行并发编程
  4. wxpython多个面板_wxpython笔记:wxPython的布局管理实践【嵌入matplotlib、页面切换】...
  5. Java注解--Java深度历险(转)
  6. rust石头墙几个c4_哪个房间需要清扫 石头扫地机器人T6可能比你还清楚
  7. 创建表头固定,表体可滚动的GridView(转)
  8. 使用枚举完成学生类,性别的设置。
  9. uml+oopc嵌入式c语言开发精讲_嵌入式开发中更接近底层的汇编与C语言
  10. thinkphp mysql高并发_WBB - ThinkPhp高并发提交如何保障数据正常
  11. Python+pandas设置DataFrame显示样式
  12. R语言神经网络与深度学习(一)
  13. Chrome插件英雄榜(第二期)
  14. HTTP协议发展历史
  15. 彻底删除win10易升
  16. 保护海洋主题的微信公众号图文排版必备素材集锦
  17. linux 开机运行应用程序
  18. 利用Django框架简单设计一个登陆页面
  19. 不改一行代码!快速迁移 Express 应用上云
  20. 学习笔记 JavaScript 动画 加速

热门文章

  1. matlab中fig文件编辑后再次打开出现import wizard无法显示fig图像
  2. 打造全能超强播放器 让WMP11顺利播放SWF
  3. 数据采集器与爬虫相比有哪些优势?
  4. 怎么脚本控制虚拟机的服务器,宿主机脚本控制虚拟机
  5. mysql代理服务器_mysql-proxy代理同一内网的数据库
  6. python 凯撒密码加密和暴力破解
  7. PSPad css编辑工具
  8. windows平台的游戏运行库
  9. 大数据搜索的互联网思维
  10. Airtest做微信小程序自动化(AirtestIDE)