使用系统级字典
Working with system-level dictionaries
我一直在做一个基于qt的c++程序,叫做RoboJournal。它使用Hunspell进行拼写检查。现在,它会自动将自己的字典文件(en_US.dic)安装到用户的主文件夹中(即~/.robojournal/en_US.dic)。这在像Windows这样的操作系统上工作得很好,没有提供兼容的字典,但是有一个设计问题我想修复:
在Linux上,有几个en_US实例。这个副本显然是要在所有使用Hunspell的程序之间共享的,这意味着如果可能的话,我的程序应该使用它,而不是依赖于它自己的副本。但是,/usr/share/hunspell/中的副本需要超级用户权限才能修改;虽然这意味着用户可以读取它,但他们不能添加单词,除非程序以超级用户权限运行,或者除非我chmod文件以允许每个人都写入它。这个问题使得/usr/share/hun斯佩尔/en_us .
是否有办法让用户修改/usr/share/hunspell/en_US. xml文件在没有超级用户权限或要求他们先chmod文件的情况下创建文件?我的Debian软件包维护者说我的应用程序应该尽可能使用全局系统资源。
在这种情况下,通常加载系统默认值,然后加载用户特定的设置文件。
所以当你的程序运行时,用户忽略了一些单词,并添加了其他单词,等等,你把它保存到用户的应用程序数据目录下的字典中。
如果你真的希望你的程序将添加到系统范围的更改保存到默认字典中,你应该提示用户,如果他们想将字典更改保存到系统默认值,然后打开一个超级用户登录,或者任何你需要保存编辑到该文件的凭据,然后保存它。
或者你甚至可以把它放在,如果程序最初是作为超级用户启动的,那么它保存到系统文件夹,否则它保存到用户的应用程序目录。
在QSettings
中解释了我所遵循的设置和不设置的模型。
http://qt project.org/doc/qt - 4.8 -/- qsettings.html #细节
http://qt project.org/doc/qt - 4.8 -/- qsettings.html # platform-specific-notes
如果您设置了应用程序名称和组织名称,那么 QSettings
将非常优雅地处理所有事情。它不会直接使用字典,但是它使用的位置/路径是有意义的。
希望对你有帮助。
- C++,系统无法执行指定的程序
- 在UNIX系统中使用DIR查找文件的字节大小
- 错误处理.将系统错误代码映射到泛型
- 当系统的卷被修改时,如何修改WASAPI环回捕获卷
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 在C++游戏中与库存系统作斗争
- 文件系统:复制功能的速度秘诀是什么
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- 在gtest.中使用fff.h模拟系统API
- 如何制作无限制照明系统
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- C++中的MSD基排序(字典序)
- 如何传递多个 std::文件系统选项?
- 遍历顺序由 std::文件系统directory_iterator给出
- C++系统找不到指定的文件错误
- 系统参数信息A 与 SPI_GETMOUSE 返回 0
- libstdc++ 文件系统中未初始化的用法?
- 如何在ECS框架中更新组件数据和通知系统
- boost::文件系统::recursive_directory_iterator多线程安全
- 使用系统级字典