WebEngine Widgets 拼写检查器示例#

将拼写检查器集成到简单的 HTML 表单中。

../_images/spellchecker-example.png

拼写检查器演示了如何将拼写检查支持集成到 HTML 表单中,用户可以提交经过拼写检查的消息。

运行示例#

要从 Qt Creator 运行示例,打开欢迎模式并从示例中选择。有关更多信息,请访问构建和运行示例。

词典#

为了能够检查拼写,我们需要为拼写检查器提供词典。Qt WebEngine 拼写检查器支持所有平台上的由 Hunspell 项目提供的词典以及 macOS 提供的本地词典。在此示例中,我们希望支持英语和德语。

要支持 Hunspell 词典,它们必须编译成特殊二进制格式。Hunspell 词典由两个文件组成

  • 一个 .dic 文件,它是一个包含该语言词汇的词典

  • 一个 .aff 文件,它定义了词典中特殊标志的含义

这两个文件可以使用与 Qt 一起提供的 qwebengine_convert_dict 工具转换为 bdic 格式。

在此示例中,我们将编译 en_US 和 de_DE 词典。但是,完整的词典在此示例中会占用太多空间。因此,我们创建了两个虚拟词典,包含以下单词并提供用于演示转换过程的示例

  • 英语词典:我,你,他,她,它,我们,他们,爱,爱的,qt

  • 德语词典:我,你,他,她,它,我们,你们,您,您,爱,爱你的,爱他的,爱他们的,爱他们,qt

词典中的每个单词都可以用 q 前缀。有关创建 dicaff 文件的更多信息,请参见 Hunspell 项目 中的 Hunspell 字典文件格式规范。

有关词典文件的搜索方法,请参阅拼写检查器特性文档

我们在项目文件中指定 QMAKE_EXTRA_COMPILERS 参数以在构建过程中添加一个转换步骤。

要设置词典,我们运行 qwebengine_convert_dict,传递词典文件的路径 dicbdic 文件。aff 文件和可选的 delta 文件也由 convert 过程进行提取。输出的 bdic 文件放在 qtwebengine_dictionaries 本地目录(或资源目录)中,应用的二进制文件将从该目录执行。

设置拼写检查器#

我们类的构造器很简单。

我们定义了我们的字典文件名和实际语言显示名称之间的简单映射。我们使用该映射来显示上下文菜单中的词典名称。默认情况下拼写检查是禁用的。因此,我们还启用拼写检查并设置 英语 词典。当 Qt WebEngine 的拼写检查服务初始化时,它将尝试加载 bdict 词典并检查它们的一致性。任何错误都通过 qWarning() 函数记录。

切换拼写检查语言#

用于拼写检查的当前语言按配置文件定义,并且可以使用 QWebEngineProfile::setSpellCheckLanguage 方法设置。当用户单击下划线拼写错误的单词时,默认的上下文菜单显示了最多四个建议。选择其中一个将替换错误的单词。我们可以通过重写 contextMenuEvent 并使用 QWebEngineContextMenuData::spellCheckerSuggestions 来实现多个建议,但我们将展示如何在上下文菜单中添加语言选项。

如上所述,我们使用 QWebEnginePage::contextMenuData 方法获取 QWebEngineContextMenuData 实例。我们使用它来通知当用户点击可编辑字段时,并在上下文菜单中显示“检查拼写”项。此外,如果启用了拼写检查,我们还将添加具有支持语言的下拉菜单“选择语言”。当触发动作时,我们使用 QWebEngineProfile::setSpellCheckLanguage 调用来设置语言。

示例项目 @ code.qt.io