• 18456阅读
  • 20回复

[提问]qt4下输入法的问题 [复制链接]

上一主题 下一主题
离线haoyunp
 
只看楼主 倒序阅读 楼主  发表于: 2011-08-13
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2011-08-16) —
我用的是天嵌的2440开发板,现在运行qt4.5的系统,输入法移植总不成功。下载了两个输入法,大家有时间的话帮我看看怎样移植输入法。
第一个输入法.syszuxpinyin输入法 应用例子 syszuxpinyin-demo.tar.gz (245 K) 下载次数:477 源文件 syszuxpinyin1.0.tar.gz (109 K) 下载次数:372 设置好环境变量后,可以编译出4个库文件,但是按照移植的方法再工程中加入库文件则弹不出键盘界面,好像是找不到库文件。
编译syszuxpinyin-demo工程,则提示找不到-lsyszuxpinyin,不知道怎么解决,
安装方法提示:
一.首先是库libsyszuxpinyin.so的移植

  1. 将 SYSZUXpinyin.tar.bz2 拷到/opt/进行解压 然后 cd SYSZUXpinyin

  2. /home/linux ....../qmake -project // /home/linux ....../qmake 为QTE交叉编译后生成的bin目录下的可执行文件
  修改 .pro文件
  TEMPLATE = lib
  在.pro中添加
  RESOURCES += syszuxpinyin.qrc
  3. /home/linux ....../qmake  
  4. make  

把生成的
libSYSZUXpinyin.so  
libSYSZUXpinyin.so.1  
libSYSZUXpinyin.so.1.0  
libSYSZUXpinyin.so.1.0.0
库文件拷到 /home/linux..../lib 下面
  
如要在板子上运行,则需要把以上库文件拷到板子上相应的库里面去 (如 /qt4/lib/下)
  

二.然后是把输入法编译到Qt中  
  将源码包中的syszuxim.h和syszuxpinyin.h头文件和syszuxpinyin.ui面板放置到你Qt程序的源代码路径下
1. /home/linux ....../qmake -project
将你的Qt程序的.pro文件中添加 QMAKE_LIBS += -lsyszuxpinyin  
在主界面源文件 .cpp中加入
  #include "syszuxpinyin.h"
  #include "syszuxim.h"
  并在需要启动输入法的函数里面加
QWSInputMethod* im = new SyszuxIM;
QWSServer::setCurrentInputMethod(im);

2. /home/linux ....../qmake
3. make


第二个输入法:MurphyPinyin0.05, MurphyPinyin-0.05.rar (351 K) 下载次数:174 安装方法再附件中
这个输入法编译就有误,提示找不到omp.h文件,在系统中搜索也找不到这个文件。

下载的这两个输入法应该能移植成功,只是我刚开始学习qt及linux系统,好多东西不清楚,所以请大家帮忙试试。已经弄了两周了,没出来结果。谢谢大家了。
离线wxj120bw

只看该作者 1楼 发表于: 2011-08-13
回 楼主(haoyunp) 的帖子
syszuxpinyin1.0.tar.gz 编译生成有个库文件 应该是syszuxpinyin.so文件或者是其他文件 这个库文件应该是syszuxpinyin-demo.tar.gz 编译所需的 所以有提示-lsyszuxpinyin,你需要将syszuxpinyin1.0.tar.gz放到系统目录,如/usr/lib。
移到板上的键盘程序应该syszuxpinyin-demo.tar.gz 编译生成的吧 如果弹出来 应该是库文件没找到 你将库文件放到系统库路径下/usr/lib 尝试下

omp.h没有印象。看下编译MurphyPinyin-0.05.rar 需要编译器的版本。或许是版本对不上导致的。
离线haoyunp
只看该作者 2楼 发表于: 2011-08-16
我的编译器的库文件文件夹是/opt/EmbedSky/qt-4.5/__install/arm/lib,我把编译的库文件放进去了
不明白为什么“你需要将syszuxpinyin1.0.tar.gz放到系统目录,如/usr/lib。”,不过我试了试也是不行。
编译的时候提示:

Running build steps for project syszuxpinyin...
Configuration unchanged, skipping QMake step.
Starting: /usr/bin/make -w
make: Entering directory `/opt/hp/SYSZUXpinyin-demo'
arm-linux-g++ -Wl,-O1 -Wl,-rpath,/opt/EmbedSky/qt-4.5/__install/arm/lib -o syszuxpinyin main.o line.o moc_syszuxpinyin.o moc_line.o moc_syszuxim.o qrc_syszuxpinyin.o -L/opt/EmbedSky/qt-4.5/__install/arm//lib -lsyszuxpinyin -lQtWebKit -lQtGui -L/tslib-1.4/lib -L/opt/EmbedSky/qt-4.5/__install/arm//lib -lts -lQtNetwork -lQtCore -lm -lrt -ldl -lpthread
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lsyszuxpinyin
collect2: ld returned 1 exit status
make: Leaving directory `/opt/hp/SYSZUXpinyin-demo'
make: *** [syszuxpinyin] 错误 1
Exited with code 2.
Error while building project syszuxpinyin
When executing build step 'Make'

离线wxj120bw

只看该作者 3楼 发表于: 2011-08-16
回 2楼(haoyunp) 的帖子
编译这个源码syszuxpinyin1.0.tar.gz 时,你生成了那些文件?
离线351339482
只看该作者 4楼 发表于: 2011-08-24
引用第2楼haoyunp于2011-08-16 13:10发表的  :
我的编译器的库文件文件夹是/opt/EmbedSky/qt-4.5/__install/arm/lib,我把编译的库文件放进去了
不明白为什么“你需要将syszuxpinyin1.0.tar.gz放到系统目录,如/usr/lib。”,不过我试了试也是不行。
编译的时候提示:
Running build steps for project syszuxpinyin...
.......

我也遇到同样的问题了 也是出现 cannot find -lsyszuxpinyin 请问解决了吗?
离线351339482
只看该作者 5楼 发表于: 2011-08-24
Re:回 2楼(haoyunp) 的帖子
引用第3楼wxj120bw于2011-08-16 22:34发表的 回 2楼(haoyunp) 的帖子 :
编译这个源码syszuxpinyin1.0.tar.gz 时,你生成了那些文件?

我编译生成了4个库文件,libSYSzuxpinyin.so,,libSYSzuxpinyin.so.1  libSYSzuxpinyin.so.1.0  libSYSzuxpinyin.so.1.0.0
离线haoyunp
只看该作者 6楼 发表于: 2011-08-24
回 5楼(351339482) 的帖子
对,我也是编译出了这四个库文件http://civilnet.cn/syszux/syszuxpinyin/,这是他们的网站
离线wxj120bw

只看该作者 7楼 发表于: 2011-08-25
回 5楼(351339482) 的帖子
linux下如果有程序需要动态库(so;so.1;so.1.0等等),可以借助工具libtool(也可能不是这个命令ldd,记不清楚 )查找该程序所需的动态库, 所以将查找的动态库放到/usr/lib或者直接放到生成可执行文件的路径下,再尝试下,看能不能行。
离线haoyunp
只看该作者 8楼 发表于: 2011-08-25
我更改为:QMAKE_LIBS +=-L/opt/EmbedSky/qt-4.5/__install/arm/lib -lsyszuxpinyin
现在提示:
arm-linux-g++ -Wl,-O1 -Wl,-rpath,/opt/EmbedSky/qt-4.5/__install/arm/lib -o SYSZUXpinyin-demo main.o line.o moc_syszuxpinyin.o moc_line.o moc_syszuxim.o qrc_syszuxpinyin.o    -L/opt/EmbedSky/qt-4.5/__install/arm//lib -L/opt/EmbedSky/qt-4.5/__install/arm/lib -lsyszuxpinyin -lQtWebKit -lQtGui -L/tslib-1.4/lib -L/opt/EmbedSky/qt-4.5/__install/arm//lib -lts -lQtNetwork -lQtCore -lm -lrt -ldl -lpthread
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lQtWebKit
collect2: ld returned 1 exit status
make: *** [SYSZUXpinyin-demo] 错误9zpM7/4
天嵌生成的qt-4.5/__install/arm下没有QtWebKit,我把qt-embedded-linux-opensource-src-4.5.0文件夹下的QtWebKit拷贝过去编译的,lib下没有webkit的库文件
离线wxj120bw

只看该作者 9楼 发表于: 2011-08-25
回 8楼(haoyunp) 的帖子
你qt-embedded-linux-opensource-src-4.5.0有没有编译说明 或者configure --help看下如何选择webkit的编译
离线haoyunp
只看该作者 10楼 发表于: 2011-08-26
回 9楼(wxj120bw) 的帖子
谢谢wxj120bw的一直关心,SYSZUXpinyin-demo终于编译过去,并且可以运行了。qt-embedded-linux-opensource-src-4.5.0中确实没有编译webkit,更改配置后就OK了。     
离线haoyunp
只看该作者 11楼 发表于: 2011-08-26
郁闷了好长时间了,现在我开始更改我的程序了。再次感谢
离线haoyunp
只看该作者 12楼 发表于: 2011-08-26
还是有点问题
syszuxpinyin编码问题
syszuxpinyin的编码应该是GB2312,而我qt4.5的应用程序中用的是UTF-8才能显示中文,要想应用这个输入法是不是应该转换编码呀?
在我的应用程序中:
QTextCodec::setCodecForTr( QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030"));
才能正常显示中文,但是输入法就不能显示中文了。

如果QTextCodec::setCodecForTr( QTextCodec::codecForName("GB2312"));,则输入法可以,程序中不能显示中文。应该怎么解决呢?
离线wxj120bw

只看该作者 13楼 发表于: 2011-08-26
回 12楼(haoyunp) 的帖子
你的qt程序有翻译过后的文件吗(qm文件) 将文件转换成gb2312(gbk)编码尝试下 在QTextCodec::setCodecForTr( QTextCodec::codecForName("GB2312"));这种情况下
离线wangrunmin
只看该作者 14楼 发表于: 2012-03-26
回 12楼(haoyunp) 的帖子
请问你这个汉字不显示的问题解决了么
离线yanzi1225627
只看该作者 15楼 发表于: 2012-08-07
有在弄这个问题的么??指点一下我把,我编译的时候出现这个问题:
widget.o: In function `Widget::on_inputButton_clicked()':
widget.cpp:(.text+0x2124): undefined reference to `SyszuxIM::SyszuxIM()'
moc_syszuxim.o: In function `SyszuxIM::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)':
moc_syszuxim.cpp:(.text+0xa0): undefined reference to `SyszuxIM::confirmString(QString)'
moc_syszuxim.o:(.rodata+0x5c): undefined reference to `SyszuxIM::~SyszuxIM()'
moc_syszuxim.o:(.rodata+0x60): undefined reference to `SyszuxIM::~SyszuxIM()'
moc_syszuxim.o:(.rodata+0x8c): undefined reference to `SyszuxIM::updateHandler(int)'
moc_syszuxpinyin.o: In function `SyszuxPinyin::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)':
moc_syszuxpinyin.cpp:(.text+0x128): undefined reference to `SyszuxPinyin::buttonClickResponse(int)'
moc_syszuxpinyin.o:(.rodata+0x74): undefined reference to `SyszuxPinyin::~SyszuxPinyin()'
moc_syszuxpinyin.o:(.rodata+0x78): undefined reference to `SyszuxPinyin::~SyszuxPinyin()'
moc_syszuxpinyin.o:(.rodata+0x154): undefined reference to `non-virtual thunk to SyszuxPinyin::~SyszuxPinyin()'
moc_syszuxpinyin.o:(.rodata+0x158): undefined reference to `non-virtual thunk to SyszuxPinyin::~SyszuxPinyin()'
collect2: ld returned 1 exit status
make: *** [Esto-server] 错误 1
离线aifei7320

只看该作者 16楼 发表于: 2014-11-14
帖子很好,怎么就沉了呢!?Qt人气不旺啊!
离线qqliukk

只看该作者 17楼 发表于: 2016-09-19
有独立输入法程序吗?安装后直接在应用程序中可以输入文字那种。求购!TEL:62964385-8155
离线dubuzherui

只看该作者 18楼 发表于: 2016-11-30
先收藏,正准备搞一个输入法了。
电力系统Qt开发
离线shf1986

只看该作者 19楼 发表于: 2017-01-10
这个在qt4上用没有问题,qt5上用不了,所以在qt5上得自己写一个......
QQ:173409750
Atmel SAMA5D3x(QQ群:476153000)
TI AM335x(QQ群:275644633)
Qualcomm/NXP/Freescale iMX6(QQ群:47768065)
嵌入式Qt、MySQL(QQ群:437438881)
离线林维渊

只看该作者 20楼 发表于: 2018-08-24
回 haoyunp 的帖子
haoyunp:谢谢wxj120bw的一直关心,SYSZUXpinyin-demo终于编译过去,并且可以运行了。qt-embedded-linux-opensource-src-4.5.0中确实没有编译webkit,更改配置后就OK了。 [表情]  [表情]  [表情]  (2011-08-26 11:34) 

如何更改配置编译webkit?
快速回复
限100 字节
 
上一个 下一个