<二>–本地词典的设计
最后更新于:2022-04-01 07:11:11
# 【Qt编程】基于Qt的词典开发系列--本地词典的设计
我设计的词典不仅可以实现在线查单词,而且一个重大特色就是具有**丰富的本地词典库**:我默认加入了八个类型的词典,如下所示:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-15_5698c1c324591.jpg)
由于是本人是通信专业,因此加入了华为通信词典、电子工程词典,又由于我喜爱编程,也加入了c语言基本函数词典。下面介绍如何设计本地词典:
## 词典类型的选择
当然是txt格式的最好了,因为我们可以用程序直接进行读取。可是网上词典一般都是用mdx格式、ld2格式的,我无法用Qt来直接读取。最终,经过不断摸索,网上查找,发现我们可以将mdx格式的词典通过软件转化为txt格式的!
## mdx词典的下载
如何获取mdx格式的词典呢?直接百度 mdx 词典就可以发现如下搜索结果:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-15_5698c1c482b94.jpg)
从中选择下载你想要的词典,这里我以http://bbs.meizu.cn/thread-3299845-1-1.html中的第一个mdx词典“三合一汉语大辞典”作为例子。
## mdx词典的查看
由于是mdx格式的,你用记事本打开就会显示乱码。那么怎么查看你下载的词典的内容呢?这时我们可以利用一个可以解析mdx格式的**软件MDict([点击下载](http://download.csdn.net/detail/tengweitw/8588165))**来打开该mdx词典。
举例说明:
假设我下载了一个“三合一汉语大辞典.mdx”,我们首先打开MDict软件来查看该词典的内容。首先选择“词库”--“词库管理”--“加入词典”,从而加入我们下载的词典文件,然后点击“词库”,从下拉列表中选择我们刚才加入的“三合一汉语大辞典”。然后单击左侧栏,就会在右侧栏中显示对应的内容。具体操作图解如下:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-15_5698c1c4a1201.jpg)![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-15_5698c1c4ba08d.jpg)
## mdx词典的转换
将mdx格式的词典转化为txt格式需要利用工具MDx词典转化工具([点击下载](http://download.csdn.net/detail/tengweitw/8588171)),只需要按照下图即可转化为txt文件:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-15_5698c1c4cf497.jpg)
用记事本打开该txt文件我们就可以发现下图类似的语言格式:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-15_5698c1c4e0be4.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-15_5698c1c505def.jpg)
我们以图中第二行为例,aadb为我们要查的单词(注意:我们这里的词典是成语词典,即查找aadb四个拼音首字母所组成的成语),而后面中的即为我们要找的成语,学过网页设计的人应该都知道嗷嗷待哺的意思,这其实是html语言,即将“嗷嗷待哺”变为蓝色字体,正如我们在MDict所看到的一样。而恰好Qt可以识别html语言,因此即使像我这种没有学过html语言的人也不用费心思去了解。
## txt词典的处理
前面我们基本上完成了词典的制作,但是我为了简便起见,我将词典中要查的词和内容分开保存。例如,我将上面的txt文件改名为Chinese.txt(方便编程使用),将其拆分如下名为ChineseA和ChineseB文件:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-15_5698c1c5350d3.jpg)
这样做的好处是,每当我在搜索窗口输入我想要查询的内容时(比如输入aadb),我就只需要打开ChineseA文件,在这里寻找是否存在该词,而不需要打开整个词典(词+内容),这样查找速度会快一点,因为很明显ChineseA的文件的大小要明显小于Chinese文件大小,**还有一点好处,会在后面的系列文章中提到**。如下所示:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-15_5698c1c5460c8.jpg)
关于如何将上面的文件拆分成两个文件,我想应该很简单,我就不在这写出具体的实现过程,只说说思路:首先读取整个文件,每次读取一行,在每一行中,遇到第一个空格就提取出来放入ChineseA.txt中,该行剩余部分放入ChineseB.txt。**值得注意的是**,两个子文件中,对应的内容应该在相同行!
好吧,也许说了这么多,你也嫌太复杂,懒得自己操作,觉得我的本地词典库足够了,那好吧,你可以自己下载我已经处理好了的txt格式的词典文件。链接为:[http://download.csdn.net/detail/tengweitw/8588209](http://download.csdn.net/detail/tengweitw/8588209)