QT 嵌入式 输入法 软键盘
设计自己的输入法需要继承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 嵌入式 输入法 软键盘相关推荐
- Java调用虚拟键盘输入法_Android 点击屏幕空白处收起输入法软键盘(手动打开)...
很多时候,我们在使用应用时,会出现输入法软键盘弹出的问题,通常情况下,我们默认会使用户点击返回键或者下一步对软键盘进行隐藏.为了更好的体验,我们可以实现当用户使用完毕软键盘时.点击屏幕空白区域即可实现 ...
- Android小技巧 自动关闭输入法软键盘
一.简介 作用:获取编辑框的最大长度,当输入后文本长度等于最大长度则关闭软键盘. 使用场景:手机号,固定位数的密码,验证码 二.代码部分 工具类 ViewUtil.java public class ...
- android 输入法 确定按钮,Android项目:输入法软键盘显示/隐藏的监听和控制,InputMethodManager用法研究...
在项目开发中,用到编辑框的地方经常涉及到要监听或者控制软键盘的显示/隐藏状态.本以为这是很容易解决的一个小问题,没想到当初碰到这个问题才明白还得花点小心思才能整好.现将针对软键盘的显示/隐藏状态的监听 ...
- 安卓输入法弹出后css横屏,mui开发安卓端,输入法软键盘导致css横屏样式判断触发...
mui开发安卓端,输入法软键盘导致css横屏样式判断触发 mui开发安卓端,输入法软键盘导致css横屏样式判断触发 css 横屏媒体查询 @media screen and (orientation: ...
- Android点击空白区域,隐藏输入法软键盘
很多时候,我们在使用应用时,会出现输入法软键盘弹出的问题,通常情况下,我们默认会使用户点击返回键或者下一步对软键盘进行隐藏.为了更好的体验,我们可以实现当用户使用完毕软键盘时.点击空白区域即可实现隐藏 ...
- 案例分享:Qt中英文输入软键盘(支持Qt4、Qt5、触摸和键鼠混合输入等)
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/111831179 长期持续带来更多项目与技术分 ...
- Android开发笔记(一百四十八)自定义输入法软键盘
手机上输入文字,都是通过系统自带的软键盘,这个软键盘可以是Android自带的,也可以是第三方软键盘如搜狗输入法.多数情况下面,系统自带的软键盘已经够用了,可是总有少数情况,系统软键盘无法满足开发者的 ...
- android 手机键盘输入法,如何控制输入法软键盘的出现方式
调用 open(null);/** * 当前弹出则关闭 * 否则弹出 * @param v */ @SuppressWarnings("static-access") public ...
- 基于MDKA5D31-EK_T70开发板的QT示例-demo06:软键盘
By Mcuzone 硬件平台:MDKA5D31-EK_T70开发板 QT版本:4.8.5 简要说明:本示例主要演示QT下调用相应的API制作软键盘及其使用效果. 应用程序运行效果: 初始化后设置 ...
最新文章
- Spring cloud zuul跨域(一)
- 浙江树人学院计算机专业好吗,浙江树人学院有哪些专业及什么专业好
- python 使用进程池Pool进行并发编程
- wxpython多个面板_wxpython笔记:wxPython的布局管理实践【嵌入matplotlib、页面切换】...
- Java注解--Java深度历险(转)
- rust石头墙几个c4_哪个房间需要清扫 石头扫地机器人T6可能比你还清楚
- 创建表头固定,表体可滚动的GridView(转)
- 使用枚举完成学生类,性别的设置。
- uml+oopc嵌入式c语言开发精讲_嵌入式开发中更接近底层的汇编与C语言
- thinkphp mysql高并发_WBB - ThinkPhp高并发提交如何保障数据正常
- Python+pandas设置DataFrame显示样式
- R语言神经网络与深度学习(一)
- Chrome插件英雄榜(第二期)
- HTTP协议发展历史
- 彻底删除win10易升
- 保护海洋主题的微信公众号图文排版必备素材集锦
- linux 开机运行应用程序
- 利用Django框架简单设计一个登陆页面
- 不改一行代码!快速迁移 Express 应用上云
- 学习笔记 JavaScript 动画 加速