gpt4 book ai didi

qt - 在使用亚洲语言输入文本时,在 OSX 上调出一个用于文本输入的输入窗口

转载 作者:行者123 更新时间:2023-12-03 16:19:17 25 4
gpt4 key购买 nike

我正在开发一个用 C++ 引擎和 Qt for UI 编写的文本编辑器。我想允许用户使用任何输入源(任何语言的键盘)进行书写。一切都很好,直到我支持具有 1-1 键盘映射的语言(例如法语/俄语键盘)。我在 Qwidget 上安装了 eventFilter,我在其中渲染文本并捕获 QEvent::InputMethod

中的键盘输入>

但是当我开始使用亚洲语言(例如日语/中文)时,我无法支持使用这种语言进行文本编辑所需的所有功能,这种情况的一个典型例子是当用户使用以下命令编写一些文本时分割下划线日语(平假名 IME)并按空格键,帮助用户确定所有字符将替换为预测对话框中的内容。参见下图:some text written on TextEdit application with Japanese Input Method( Hiragana ), notice the split underlines coming up when user hits a spacebar, :

经过一段时间的挣扎,我发现 Qt 没有提供有关被替换字符串的分割或长度的足够信息,因此我放弃了自己创建所有这些视觉外观的想法。

但后来我发现一些应用程序使用某些操作系统特定的输入方法来处理如此复杂的文本。一个例子是 OSX Finder,如果我们将输入法更改为日语(平假名)并在查找器窗口处于焦点时开始输入,它会弹出一个 float 窗口,该窗口接受我的所有输入并将其传递给查找器。见下图enter image description here

我深入挖掘,发现有一个这样的框架,它可以作为文本服务管理器使用,并带有大量文档(“http://mirror.informatimago.com/next/developer.apple.com/technotes/te/te_27.html#Downloads”),这对我来说可以很容易地完成这个技巧,但是这个API有已被弃用并且不再可用。

我现在正在寻找的是这个已弃用的 API 的替代方案。我们是否有一个 cocoa API 可以帮助我使用这个操作系统输入法组件来轻松输入文本?

最佳答案

好的,我找到了解决方案。我无知地说 Qt 没有提供有关这些拆分的足够信息。 Qt 有一种方法通过使用插入符位置来提供这种支持。总而言之,要显示的文本信息可以通过以下方式轻松检索:

for( auto value : inEvent->attributes() )
{
if( value.type == QInputMethodEvent::Cursor )
{
std::cout<<" length "<< value.length;
std::cout<<" start "<< value.start;
}
}

这里,start是光标的位置。一旦明确了这个位置,就很容易确定应该在多长的文本中加下划线,以便给用户明确的指示。

关于qt - 在使用亚洲语言输入文本时,在 OSX 上调出一个用于文本输入的输入窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36337063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com