我在Qt中有一个程序,在其中有一个WebEngineView。我想当用户单击webEngine中的输入框时,已经加载了一个键盘,并且该输入框从我的键盘上获取了内容(我写了自己的键盘),但是我无法做到。我在下面尝试代码,但不起作用
WebEngineView {
anchors.fill:parent
id:webEng
url: "https://example.com"
visible: true
MouseArea {
id : mousearea
anchors.fill: parent
onClicked: {
mykeyboard.visible=true;
}
}
}
答案 0 :(得分:0)
这不是一个完整的答案,但是此代码可以帮助您
getImage()
import QtQuick 2.10
import QtWebView 1.1
import QtQuick.Controls 1.4
import QtWebEngine 1.7
Item {
width: 1280
height: 720
WebView { // or WebEngineView {
id: webview
width: 1280
height: 720
url: "http://google.com"
visible: true
onLoadingChanged: {
if (loadRequest.status === WebView.LoadSucceededStatus) {
console.log("Loaded!!")
webview.runJavaScript('
var input = document.getElementById("lst-ib");
input.addEventListener("click", function() {
alert("Clicked!");
});
'
)
}
}
}
Rectangle {
id: myDummyKeyboard
anchors.bottom: parent.bottom
width: parent.width
height: 100
color: "gray"
visible: true
border.width: 20
Button {
anchors.centerIn: parent
text: "Dummy"
onClicked: {
webview.runJavaScript('document.getElementById("lst-ib").value += "' + text + '"');
}
}
}
}
(或WebView
)中的部件允许在单击输入时显示警报。但是,缺少一些东西,无法将其链接到QML处理程序。解决方案可能是使用WebEnginView
,也可能使用{folibis在评论中说的WebChannel
。