基于 QtWebKit 的浏览器的虚拟键盘或如何获取当前聚焦的文本字段?

Posted

技术标签:

【中文标题】基于 QtWebKit 的浏览器的虚拟键盘或如何获取当前聚焦的文本字段?【英文标题】:Virtual keyboard for QtWebKit based browser or how can I get the currently focused text field? 【发布时间】:2009-08-29 21:21:47 【问题描述】:

我正在为基于 QtWebKit 的浏览器实现虚拟键盘。我很难理解 QtWebKit 如何在实际页面中绘制控件。最初我以为它们是 QLineEdit 实例,但它们不是。深入实施,Qt 和 WebKit 之间的粘合代码似乎使用 QStyle 和 QPainter 绘制文本字段。不幸的是,我对 Qt 很陌生,所以我不明白在事件循环中,这些事件的鼠标按下是在哪里被解释的。我在调用堆栈深处找到了 Editor::canEdit(),现在我可以在用户单击页面中的文本字段时调出虚拟键盘。然后,虚拟键盘需要一个指向 QWidget 实例的指针,但 Edito::canEdit() 不携带该信息,并且我无法找到暴露类似 QWidget 实例的任何地方。我真的很难过,欢迎任何建议。

谢谢!

【问题讨论】:

【参考方案1】:

通过将虚拟键盘连接到 Qt 输入法系统,您可能会获得更好的运气。在QtWebKit Api的源码中搜索“InputMethod”,即qweb*.*文件。

【讨论】:

从 Qt 4.5.2 开始,您无法使用 WebKit 的输入机制,但它们已经为 4.6 添加了支持结构。

以上是关于基于 QtWebKit 的浏览器的虚拟键盘或如何获取当前聚焦的文本字段?的主要内容,如果未能解决你的问题,请参考以下文章

弹出虚拟键盘时如何在 iOS 浏览器上重新定位视图?

如何使用 QtWebKit 设置浏览器的大小

Qtwebkit 持久性 Cookie 不起作用

在 QtWebkit 中,如何调用网页的 QNetworkAccessManager::createRequest()?

如何在 Qt5 上编译 QtWebKit?

QtWebkit:如何跟踪/修改 HTTP 请求?