6

Symbian S60 第 5 版上的虚拟键盘是如何(即使用哪个 API)打开的?该文档似乎缺少有关此的信息。

4

3 回答 3

4

你是对的,这显然应该是一个已发布的 API,它应该在文档中突出显示。没有这样的运气。

  • 如果您使用的是平台原生控件之一,当用户访问文本编辑控件时,虚拟键盘将自动弹出。

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

  • 如果您使用直接屏幕访问,那么您不会完全期望看起来非常 s60 的虚拟键盘会突然弹出。再次,在屏幕上绘制一个漂亮的图像,让用户知道虚拟键在哪里并对指针事件做出反应。除非您在其中构建大量自定义(背景,按钮边缘......),否则这将不太可重用。

编辑:诺基亚可能依靠 Qt 来解决这个问题。我希望该控件成为当前 4.7 版 Qt 的一部分。

于 2008-11-22T11:30:25.247 回答
3

专注于自定义编码动态滚动区域内的 QLineEdit,我遇到了一个类似的问题(如何手动打开虚拟键盘)。然后,我发现它显然适用于 C7 Symbian^3 手机上的 Qt 4.6.3:

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

在此之前,我还必须将 QEvent::FocusIn 事件发布到同一个 lineedit,否则 QLineEdit 不会更新虚拟键盘的内容。

希望这会有所帮助。我失去了几个小时。

于 2010-11-30T15:45:10.023 回答
1

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

QApplication::postEvent(lineEdit, new QEvent(QEvent::CloseSoftwareInputPanel));
于 2011-01-03T20:45:25.393 回答