研究完zd394071264《移植SYSZUXpinyin到tiny6410》后自己的修改与优化

来源:互联网 发布:淘宝猪哼少是正品澄清 编辑:程序博客网 时间:2024/04/30 01:29

研究完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定义的东西不能用,不知道有没有人知道是怎么回事?怎么解决?



0 0
原创粉丝点击