使用qml键盘处理网页的文本元素

Handling text elements of web pages using qml keyboard

本文关键字:文本 元素 网页 处理 qml 键盘 使用      更新时间:2023-09-26

我正在使用Qt Web Kit 1.0打开网页。我有一个可用的键盘,用qml编写。我想用这个键盘将文本填充到HTML页面的文本框中。

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

您可以通过评估WebView:中的一些自定义javascript代码来更改文本字段值

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

此处提供文档。

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

第2版:我添加了一个简单的例子来解释我想说的内容:

我假设您有一个名为Keyboard的QML自定义项,并且每当按下某个键时,该项都会调用一个信号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 + "'")
    }
}