• 983阅读
  • 17回复

开源了!开源了!开源了!集成google输入法的嵌入式中文输入面板 [复制链接]

上一主题 下一主题
离线笑颜
 

只看楼主 倒序阅读 楼主  发表于: 07-17
想着这个东西应该发出来没问题,就开源给大家了如果有问题,我再删了。
看效果:
window.open('http://www.qtcn.org/bbs/attachment/Mon_1807/92_175234_8f3930d68887424.gif?469');" style="max-width:700px;max-height:700px;" onload="if(is_ie6&&this.offsetWidth>700)this.width=700;" >


功能说明:
1.面板上面的功能都没有,只有换肤可以用。
2.代码里面有两种输入法的算法,一种是google,一种是我自己写的。


3.支持各种符号的录入。(用一个文件记录的特殊符号)
4.中文输入的功能几乎和windows的相似。
5.自己探索吧!

源码: https://github.com/xiaoyanLG/Soft-keyboard
欢迎关注: https://blog.csdn.net/xiaoyan_yt
离线nigoole

只看该作者 1楼 发表于: 07-17
有句话说得好:好好学习,天天向上。加油~~!
离线stlcours

只看该作者 2楼 发表于: 07-17
博客里的文章少了点,加油多写点啊,造福众生~~
离线ccazqyy

只看该作者 3楼 发表于: 07-18
        
离线liudianwu

只看该作者 4楼 发表于: 07-18
输入法核心做得非常棒,比我那个要好,支持首字母模糊查找,尤其是谷歌输入法的核心部分,大大的赞!
QtQML多多指教开发社区 http://www.heilqt.com
将QtCoding进行到底,做Qt的宠儿
群号:312125701(QtQML多多指教群) 46679801(Qt开发技术交流群-5000人大群)
离线nigoole

只看该作者 5楼 发表于: 07-18
回 liudianwu 的帖子
liudianwu:输入法核心做得非常棒,比我那个要好,支持首字母模糊查找,尤其是谷歌输入法的核心部分,大大的赞![表情]  (2018-07-18 11:25) 

终于可以给你的跑车换轮胎了!~飞起
有句话说得好:好好学习,天天向上。加油~~!
离线robinsonsir

只看该作者 6楼 发表于: 07-24
  
离线hehui

只看该作者 7楼 发表于: 07-27
离线txc314159

只看该作者 8楼 发表于: 07-31
测试部分为什么没用,不能输东西进去。
离线笑颜

只看该作者 9楼 发表于: 07-31
回 txc314159 的帖子
txc314159:测试部分为什么没用,不能输东西进去。 (2018-07-31 16:33) 

并没有注册到真正的输入服务里面。
离线笑颜

只看该作者 10楼 发表于: 07-31
回 txc314159 的帖子
txc314159:测试部分为什么没用,不能输东西进去。 (2018-07-31 16:33) 

为了满足你的要求,简单改了下,你下载最新的就可以输入到测试框里面了!
离线liuchangyin

只看该作者 11楼 发表于: 08-08
离线xiiaoleii

只看该作者 12楼 发表于: 08-09
感谢大神的分享!在windows下MIngGW的Qt5.7可以编译使用,在ubuntu 14里面可以编译,一运行就崩了。我把谷歌输入法工程单独拿出来运行的,配合demo输入一个字母,调用查询接口,可以查到中文windows qt正常运行。ubuntu qt在init这里加在词库的时候崩了,terminal called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc.
离线xiiaoleii

只看该作者 13楼 发表于: 08-09
ubuntu Qt里面,编译可以了,运行的时候 bool ret = googlePinyin->init(qApp->applicationDirPath() + "/dict");这个返回的是false!所以查询不到汉字哪里需要修改么?
离线xiiaoleii

只看该作者 14楼 发表于: 08-09
逐行跟踪,发现这个地方出了问题:
SpellingTrie &spl_trie = SpellingTrie::get_instance();
if(!spl_trie.load_spl_trie(fp)||省略)这句崩了!加载词库dict文件崩了!
下面是源码部分:不知道哪里有问题,毕竟谷歌的代码,不知道如何修改。
const SpellingTrie* SpellingTrie::get_cpinstance() {
  return &get_instance();
}

SpellingTrie& SpellingTrie::get_instance() {
  if (NULL == instance_)
    instance_ = new SpellingTrie();

  return *instance_;
}
离线xiiaoleii

只看该作者 15楼 发表于: 08-09

这个异常查了资料,据说是频繁的new和delet造成的,这个代码写的也是飘逸;
bool SpellingTrie::load_spl_trie(FILE *fp) {
  if (NULL == fp)
    return false;
  if (fread(&spelling_size_, sizeof(size_t), 1, fp) != 1)
    return false;
  if (fread(&spelling_num_, sizeof(size_t), 1, fp) != 1)
    return false;
  if (fread(&score_amplifier_, sizeof(float), 1, fp) != 1)
    return false;
  if (fread(&average_score_, sizeof(unsigned char), 1, fp) != 1)
    return false;
    printf("%s","iii");

  if (NULL != spelling_buf_)
    delete [] spelling_buf_;
    printf("%s","jjj");

  spelling_buf_ = new char[spelling_size_ * spelling_num_];
  printf("%s","kkk");

  if (NULL == spelling_buf_)
    return false;
    printf("%s","lll");
  if (fread(spelling_buf_, sizeof(char) * spelling_size_,
            spelling_num_, fp) != spelling_num_)
    return false;

  return construct(spelling_buf_, spelling_size_, spelling_num_,
                   score_amplifier_, average_score_);
}
离线xiiaoleii

只看该作者 16楼 发表于: 08-09
回 xiiaoleii 的帖子
xiiaoleii:这个异常查了资料,据说是频繁的new和delet造成的,这个代码写的也是飘逸;
bool SpellingTrie::load_spl_trie(FILE *fp) {
  if (NULL == fp)
    return false;
....... (2018-08-09 14:48) 

spelling_buf_ = new char[spelling_size_ * spelling_num_];这句代码有毒,哈哈!
离线icecool

只看该作者 17楼 发表于: 昨天 17:12
回 xiiaoleii 的帖子
xiiaoleii:spelling_buf_ = new char[spelling_size_ * spelling_num_];这句代码有毒,哈哈! (2018-08-09 15:14) 

你好,我遇到跟你一样的问题,请问你解决了吗?
快速回复
限100 字节
 
上一个 下一个