我正在开发一个嵌入式 Webkit 浏览器(在 linux 上使用 Qt 4.8.0),该浏览器在电视机上使用遥控器运行。到目前为止,我几乎完成了所有工作,现在我正在尝试处理<input>
网页中的标签。
What I'd like to happen is: whenever an input field is selected, I'd like to pop my virtual keyboard and let the user enter text with his remote, then push back the result into the .
我已经尝试了几种方法来做到这一点:
- 使用本教程安装QInputContext:我没有看到任何事件通过我安装的 InputContext。
- 在浏览器的不同阶段(在 QApp、QGraphicsWebPage、QGraphicsWebView 中)重新实现各种
eventFilter()
:我看到了 LOADS 的事件,但从来没有看到我感兴趣的事件(QEvent::RequestSoftwareInputPanel
/QEvent::CloseSoftwareInputPanel
/FocusIn
/FocusOut
/Enter
/Leave
)。 - using
installSceneEventFilter()
给了我与前一点相同的结果。
由于我没有使用鼠标,因此我无法处理诸如“鼠标悬停”或“鼠标单击”之类的事件来确定<input>
元素是否被聚焦。
所以我想知道如何连接到<input>
网页中的任何内容以检测焦点何时到达它。请注意,即使该<input>
字段是通过页面中的 Javascript 脚本动态插入的,我想这也必须有效。
我可以连接到 Qt 信号吗?
如何处理动态插入的新输入表单?
我尚未探索的可能解决方案:使用QT_KEYPAD_NAVIGATION
in mkspecs 作为我的拱门,然后过滤应该通过的 QEvent::EnterEditFocus。我宁愿坚持我现在拥有的香草 Qt,所以这是一个极端(我不确定它是否会起作用)。