使用系统级词典

时间:2013-03-11 19:17:30

标签: c++ qt hunspell

我一直在研究一种名为RoboJournal的基于Qt的C ++程序。它使用Hunspell进行拼写检查。现在,它会自动将自己的字典文件(en_US.dic)安装到用户的主文件夹中(即〜/ .robojournal / en_US.dic)。这在Windows等操作系统上运行良好,没有提供开箱即用的兼容词典,但是我想解决一个设计问题:

在Linux上,有几个en_US.dic实例(最值得注意的是/usr/share/hunspell/en_US.dic)这个副本显然是要在所有使用Hunspell的程序之间共享,这意味着我的程序应该尽可能使用它而不是依赖自己的副本。但是,/ usr / share / hunspell /中的副本需要超级用户权限才能修改;虽然这意味着用户可以从中读取它们不能添加单词,除非程序以超级用户权限运行,或者除非我chmod该文件以允许每个人写入它。这个问题使得/usr/share/hunspell/en_US.dic副本的用处更少。

用户是否有办法修改/usr/share/hunspell/en_US.dic文件,而没有超级用户权限或要求他们先修改文件?我的Debian软件包维护者说我的应用程序应尽可能使用全局系统资源。

1 个答案:

答案 0 :(得分:1)

在这种情况下,通常会加载系统默认值,然后加载用户特定的设置文件。

因此,当您的程序运行并且用户忽略某些单词并添加其他单词等时,您将其保存到其应用程序数据目录中的用户词典中。

如果您确实希望程序将系统范围内的更改保存到默认字典中,则应提示用户,是否要将字典更改保存到系统默认值,然后打开超级用户登录名或任何凭据您需要将编辑保存到该文件,然后保存。

或者您甚至可以将程序最初作为超级用户启动,然后将其保存到系统文件夹,否则将其保存到用户的应用程序目录。

QSettings中解释了我遵循设置的模型以及不适用的模型。

http://qt-project.org/doc/qt-4.8/qsettings.html#details

http://qt-project.org/doc/qt-4.8/qsettings.html#platform-specific-notes

如果您设置应用程序名称和组织名称,

QSettings会优雅地处理所有内容。它没有开箱即用的hunspell词典,但它使用的位置/路径非常重要。

希望有所帮助。