为触摸板添加软键盘,网上有很多相关代码,我尝试了几种,并选取了两种与大家共享。
按照惯例,先上传送门。
第一种,SYSZUXpinyin中文输入法。下载SYSZUXpinyin
第二种,Qt4SoftKeyboard-master中文输入法。下载Qt4SoftKeyboard
一、SYSZUXpinyin中文输入法安装
这个输入法并不推荐,使用起来不太方便,界面也不是特别美观。
1.1 解压syszuxpinyin1.0.tar.gz
#tar -zxvf syszuxpinyin1.0.tar.gz
1.2 编译生成库文件
在这一步,网上会让你使用在解压后文件夹的根目录下,进行qmake,然后make的方法,但是这样生成的库文件,在龙芯1B的开发板下不一定能够使用,需要使用mipsel进行重新编译,有两种方法,前提都是你的交叉编译的环境已经搭建好。
1.2.1 根目录下操作
#qmake //生成配置文件
#make ARCH=mips CROSS_COMPILE=mipsel-linux //利用mipsel的编译器进行编译
1.2.2 利用QT进行编译
在解压后的文件夹中有一个.pro文件,这个时QT可以使用的工程文件。因此在QT Creator中将该工程导入,然后依次选择
“项目” -->选择mipsel环境的交叉编译器 -->“运行”
在构建目录下就能看到生成的库文件了。将以下四个文件移入龙芯1B开发板存放库文件的目录中,并且也复制一份,到你所需要软键盘的软件的工程文件下。
libsyszuxpinyin.so
libsyszuxpinyin.so.1
libsyszuxpinyin.so.1.0
libsyszuxpinyin.so.1.0.0
1.3 修改你需要软键盘的代码的工程文件
在该工程文件中,即.pro文件中,添加这么一行代码
LIBS=-L/…/…/…/lib -lsyszuxpinyin
-L后面的是指向你主机上存放刚那四个库文件位置的目录,不一定以lib这个目录收尾,根据实际填写,就比如我刚才将这四个文件复制到了我的工程文件目录下,这里就填写的是我的工程文件的目录。
注:这里指向的只是你的软件代码在编译时所需要的库文件的地址,软件在开发板中运行时,则是根据环境变量来寻找的这几个库文件。
1.4 这个输入法的不足指出
这个输入法的中文输入的编码方式是GB2312,而QT的界面的默认中文编译方式是UTF-8。在QT4中,涉及到中文,我们往往会在main文件中添加以下几行代码。
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCString(QTextCodec::codecForName("UTF-8"));
而在这个输入法使用中,你只能添加一条
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
如果添加另外两条,则中文无法正常输入,但是如果不添加这两条命令,则会出现你的label等的中文无法正常显示。
网上有两种解决方法:
1.4.1 使用toUnicode
QTextCodec *tc;
tc=QTextCodec::codecForName("UTF-8");
在需要使用的地方,利用如下语言
QString title=tc->toUnicode("我的软件名");
如此使用十分繁琐,每一次使用中文都需要调用toUnicode函数。
1.4.2 利用QT的国际化
利用QT的国际化实现多国语言的切换。我没有尝试,在这里放一个中文包的下载链接,有兴趣的自己尝试。使用Qtranslate来实现中文转换。
中文包下载地址
二、t4SoftKeyboard-master输入法
这种方法使用起来就方便很多,只需要将解压后的文件中的
SoftKeyBoard.cpp
SoftKeyBoard.h
SoftKeyBoardContext.cpp
SoftKeyBoardContext.h
qrc.qrc
FontLibrary.txt
复制到你所需要软键盘的工程文件下即可。
并且在main文件下添加相应头文件和几行代码
#include "SoftKeyBoardContext.h"
SoftKeyBoardContext *ic=new SoftKeyBoardContext();
a.setInputContext(ic); //a为 QApplication a(argc,argv);中的a。
然后在编译后,需要输入的地方,双击即可弹出软键盘,我只测试了QLineEdit。