天天看点

【Qt编程】基于Qt的词典开发系列<十四>自动补全功能

    最近写了一个查单词的类似有道词典的软件,里面就有一个自动补全功能(即当你输入一个字母时,就会出现几个候选项)。这个自动补全功能十分常见,百度搜索关键词时就会出现。不过它们这些补全功能都是与你输入的进行首字匹配,有时也会不方便。例如,如果我输入一个“好”,如果是首字匹配的话会出现下图:

【Qt编程】基于Qt的词典开发系列<十四>自动补全功能

如果是句中匹配的话,则是这种情况:

【Qt编程】基于Qt的词典开发系列<十四>自动补全功能

你可以根据自己的要求进行选择哪一种模式。

    Qt中自带QCompleter类来实现上面的自动补全功能,读者可以在Qt自带的demo中很容易的学会该类的使用。下面我要讲的是自己构造一个比QCompleter更强大的类。有人会说,为什么有现成的不用,要自己写一个类呢?因为,我用QCompleter类的时候发现,它只有句首匹配模式(可能是我没仔细看文档,不知道可以改变模式),其次,当我的词库非常大的时候,有的时候就不会出现下拉自动补全列表,具体原因也不清楚。所以自己写了一个类,来实现QCompleter类所没有功能。废话不多说,直接见代码(代码注解比较详细,就不仔细讲解了,widget.ui文件也不给出了,就是一个空的界面):

1、widget.h

2.completelineedit.h

3.widget.cpp

4.completelineedit.cpp

5.main.cpp

最后放两张查单词软件用到的自动补全功能的截图:

【Qt编程】基于Qt的词典开发系列<十四>自动补全功能
【Qt编程】基于Qt的词典开发系列<十四>自动补全功能

基于Qt的词典开发系列

<a target="_blank" href="http://blog.csdn.net/tengweitw/article/details/44757875">词典框架设计及成品展示</a>

<a target="_blank" href="http://blog.csdn.net/tengweitw/article/details/45014771">本地词典的设计</a>

<a target="_blank" href="http://blog.csdn.net/tengweitw/article/details/45099867">开始菜单的设计</a>

<a target="_blank" href="http://blog.csdn.net/tengweitw/article/details/38758051">无边框窗口的缩放与拖动</a>

<a target="_blank" href="http://blog.csdn.net/tengweitw/article/details/38817595">无边框窗口的拖动</a>

<a target="_blank" href="http://blog.csdn.net/tengweitw/article/details/45223931">界面美化设计</a>

<a target="_blank" href="http://blog.csdn.net/tengweitw/article/details/45484803">调用网络API</a>

<a target="_blank" href="http://blog.csdn.net/tengweitw/article/details/45932429">用户登录及API调用的实现</a>

<a target="_blank" href="http://blog.csdn.net/tengweitw/article/details/45932429">JSON数据解析</a>

<a target="_blank" href="http://blog.csdn.net/tengweitw/article/details/23294533">国际音标的显示</a>

<a target="_blank" href="http://blog.csdn.net/tengweitw/article/details/38237203">系统托盘的显示</a>

<a target="_blank" href="http://blog.csdn.net/tengweitw/article/details/38306803">调用讲述人</a>

<a target="_blank" href="http://blog.csdn.net/tengweitw/article/details/38555787">音频播放</a>

<a target="_blank" href="http://blog.csdn.net/tengweitw/article/details/38689745">自动补全功能</a>

<a target="_blank" href="http://blog.csdn.net/tengweitw/article/details/38734201">HTML特殊字符及正则表达式</a>

<a target="_blank" href="http://blog.csdn.net/tengweitw/article/details/46563781">后序</a>

作品下载地址(绿色版):http://download.csdn.net/detail/tengweitw/8830495

源码下载地址:http://download.csdn.net/detail/tengweitw/8830503

作者:nineheadedbird