我正在开发一个用 C++ 引擎和 Qt for UI 编写的文本编辑器。我想允许用户使用任何输入源(任何语言的键盘)进行书写。这一切都很好,直到我支持具有 1-1 键盘映射的语言(例如法语/俄语键盘)。我eventFilter
安装了一个Qwidget
我正在渲染文本并在其中捕获键盘输入的设备QEvent::InputMethod
但是当我开始使用亚洲语言(如日文/中文)时,我无法支持使用这种语言进行文本编辑所需的所有功能,这种情况的典型示例是用户使用日文(平假名)编写一些文本时的分割下划线IME )并按空格键,帮助用户确定所有字符将替换为预测对话框中的内容。见下图::
在挣扎了一段时间后,我发现 Qt 没有提供关于被替换的字符串的拆分或长度的足够信息,我放弃了自己创建所有这些视觉外观的想法。
但后来我发现有些应用程序使用一些特定于操作系统的输入法来处理这种复杂的文本。一个例子是 OSX Finder,如果我们将输入法更改为日语(平假名)并在 finder 窗口处于焦点时开始输入,它会弹出一个浮动窗口,接受我的所有输入并将其传递给 finder。见下图
我挖掘得更多,我发现有这样一个框架,它早先作为文本服务管理器提供,有很多文档(“ http://mirror.informatimago.com/next/developer.apple.com/technotes/te/ te_27.html#Downloads " ) 这对我来说可以很容易地完成这个技巧但是这个 API 已经被弃用并且不再可用。
我现在正在寻找的是这个已弃用的 API 的替代方案。我们是否有一个可可 API 可以帮助我将这个操作系统输入法组件引入到简单的文本输入中?