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

发布于 2025-01-07 14:06:14 字数 194 浏览 1 评论 0原文

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

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

I am using the Qt Web Kit 1.0 to open web pages. I have a keyboard available with me, written in qml. I want to use this keyboard to fill in the text into text boxes of the HTML pages.

Say, I opened gmail.com. Now, I want to fill in the user name and password. But when I will click on this text element of the webpage, what event should I handle to bring out my keyboard for user to use it ? And where exactly will I send this text generated from the keyboard, for it to be set into the username field of that page ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苍暮颜 2025-01-14 14:06:14

您可以通过评估 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 + "'")
    }
}

You can change the text field value by evaluating some custom javascript code in the WebView:

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

Documentation here.

Edit:
For the keyboard activation you can refer to the javaScriptWindowObjects property: you can activate it, for example, in the body onload event, or in the text field onfocus event.

Edit2:
I add a simple example to explain what I'm trying to say:

I assume you have a QML custom Item called Keyboard, and that this Item has a signal onKeyPress called whenever a key is pressed.

Your code should be something like this:

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 + "'")
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文