Symbian S60 5th edition中的虚拟键盘:使用哪个API?

6

在Symbian S60第5版中,使用哪个API打开虚拟键盘?文档似乎缺乏相关信息。

3个回答

4
您是正确的,这显然应该是一个发布的API,并且在文档中应该突出显示。可惜没有这样的运气。
  • 如果您正在使用平台原生控件,则当用户访问文本编辑控件时,虚拟键盘将自动弹出。

  • 如果您正在制作自定义控件,则需要通过添加自己版本的虚拟键盘来处理其选择:创建一个新的文本编辑、窗口所有权的虚拟键盘外观类似的自定义控件,并具有正确的按钮。在所有应用程序中重复使用它。有一天,诺基亚将意识到他们犯了一个明显的错误,并公开提供API。

  • 如果您正在使用直接屏幕访问,那么您不会指望非常s60外观的虚拟键盘从无处弹出。同样,在屏幕上绘制一个漂亮的图像,以让用户知道虚拟键位的位置并对指针事件做出反应。这将不太可重用,除非您将大量定制(背景、按钮边缘等)构建到其中。

编辑:诺基亚可能依赖Qt来解决此问题。我希望该控件是当前4.7版本的Qt的一部分。


3

在自定义编码的动态滚动区域内调整QLineEdit的焦点时,我遇到了类似的问题(如何手动打开虚拟键盘)。然后,我发现这在C7 Symbian^3手机上的Qt 4.6.3中显然有效:

// lineEdit is an instance of QLineEdit    
QApplication::postEvent(lineEdit, new QEvent(QEvent::RequestSoftwareInputPanel));

在此之前,我还需要向同一行编辑框发送一个QEvent::FocusIn事件,否则QLineEdit无法从虚拟键盘更新内容。
希望这有所帮助,我花了几个小时才解决。

1

谢谢tihi,非常有用的提示!还有可以触发的“关闭虚拟键盘”事件:

QApplication::postEvent(lineEdit, new QEvent(QEvent::CloseSoftwareInputPanel));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接