2012-02-18 38 views
1

我正在使用Qt Web Kit 1.0打开网页。我有一个可用的键盘,用qml写成。我想用这个键盘将文本填入HTML页面的文本框中。使用qml键盘处理网页的文本元素

说,我打开gmail.com。现在,我想填写用户名和密码。但是当我点击这个网页的文本元素时,我应该处理什么事件来显示我的键盘供用户使用?我究竟会在哪里发送从键盘生成的这段文本,以便将其设置到该页面的用户名字段中?

+0

我认为你需要提供一些更多的细节。您是否使用QML WebView元素? (http://doc.qt.nokia.com/4.7-snapshot/qml-webview.html)或者你在C++中做web工具? – sidewinderguy 2012-05-15 00:16:36

+0

我只使用Qml来创建我的浏览器。是的,Qml WebView元素和其他这样的Qml实体。当我点击上面描述的Web页面中使用WebView元素打开的字段时,我无法获取将生成的事件。 – 2012-05-17 09:10:43

回答

0

您可以通过在WebView评估一些自定义JavaScript代码更改文本字段值:

webViewId.evaluateJavaScript("document.getElementById('textInputId').value = '" + yourValueString + "'") 

文档here

编辑: 对于键盘激活,你可以参考javaScriptWindowObjects属性:您可以激活它,例如,在身体onload事件,或在文本字段onfocus事件。

EDIT2: 我添加了一个简单的例子来解释什么,我想说:

我假设你有一个QML自定义项目名为Keyboard,而这个项目有一个叫做信号onKeyPress每当键被按下。

你的代码应该是这样的:

WebView { 
    id: webViewId 
    javaScriptWindowObjects: QtObject { 
     WebView.windowObjectName: "qml" 

     function showKeyboard { 
      keyboardId.opacity = 1; 
     } 
    } 

    onLoadFinished: { 
     evaluateJavaScript("document.getElementById('textInputId').onfocus = window.qml.showKeyboard;") 
    } 
} 

Keyboard { 
    id: keyboardId 
    opacity: 0 

    onKeyPress: { 
     webViewId.evaluateJavaScript("document.getElementById('textInputId').value += '" + keyValue + "'") 
    } 
} 
+0

**'你可以激活它,例如,在body onload事件中,或者在文本字段on focus事件_'**当用户单击文本输入框[内部网页]时,我应该正常地拿出键盘。例如,当我点击用户名字段时,PAGE会生成一些信号/事件。我应该如何捕获该事件,然后将其绑定到qml中的操作? – 2012-07-18 07:39:02

+0

类似地,对于您关于设置文本字段的其他响应,我可以在哪里以及如何指定将该文本(比如“my_user_name”)分配给我通过键盘输入到网站的“用户名”文本输入框字段gmail.com)? – 2012-07-18 07:42:40

+0

1)QML键盘 - >页面JS:您可以在QML键盘中捕捉按键事件,并使用'evaluateJavaScript'来执行JS脚本,该脚本会将按下的键值添加到文本字段中。 2)页面JS事件 - > QML键盘显示:在我关于'javaScriptWindowObjects'链接的文档中,有一个关于如何使用它在Web页面JS中执行一些QML函数的简单示例。您可以操作您已加载的任何页面,并向将显示QML键盘的函数添加调用。 – 2012-07-19 07:46:52