研究完zd394071264《移植SYSZUXpinyin到tiny6410》后自己的修改与优化
如何使用syszuxpinyin作为静态库放在arm-ti8168x上使用?
目标:不用修改主程序(调用程序的编码方式),如不用 QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
1、把syszuxpinyin下的syszux/syszuxpinyin(拼音库)用工具转为UTF-8(without-BOM)
2、修改syszuxpinyin.cpp
SyszuxPinyin::SyszuxPinyin(QWSInputMethod* im) :QDialog(0,Qt::Tool | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint),button_group(new QButtonGroup(this)),input_method(0),lower_upper(0),page_count(0)
{
int ret=0;
setupUi(this);
initGb();
//pinyin_file.setFileName(":/syszux/syszuxpinyin");用qrc加到程序中的方式失败,还没有研究成功
pinyin_file.setFileName("/mnt/userUbifs/syszuxpinyin");
if( !pinyin_file.open(QIODevice::ReadOnly) )
{
qDebug()<<"can't load :syszuxpinyin ?? !"<< endl;
//QMessageBox::warning(0,tr("syszuxpinyin"),tr("can't load :/syszux/syszuxpin.gbk !"));
}
regExp.setCaseSensitivity(Qt::CaseSensitive);
regExp.setPattern(QString("([a-z]+)"));
while(!pinyin_file.atEnd())
{
//QByteArray data = pinyin_file.readLine();
//ret = regExp.indexIn(QString(data.data()),0,QRegExp::CaretAtZero);
//pinyin_map.insert(regExp.cap(1),data.left(ret));
QString str=QString::fromUtf8(pinyin_file.readLine());
ret = regExp.indexIn(str,0,QRegExp::CaretAtZero);
pinyin_map.insert(regExp.cap(1),str.left(ret));
}
connect(this,SIGNAL(sendPinyin(QString)),im,SLOT(confirmString(QString)));
}
3、编译成.a文件,复制到交叉编译系统库下:<yourpath>/linux-devkit/arm-arago-linux-gnueabi/lib/
4、编译主程序,测试正常成功。
有一个问题未解决:pinyin_file.setFileName(":/syszux/syszuxpinyin");不成功??!!
作为库使用时,好像.qrc定义的东西不能用,不知道有没有人知道是怎么回事?怎么解决?