我的应用使用标签,其中一个标签使用 WebView 显示网页。现在,我有一个带有一个操作按钮的工具栏,我想显示一个对话框 - 但不行。
相反,当我按下操作按钮时,我收到此错误消息:
file:///usr/lib/x86_64-linux-gnu/qt5/qml/Ubuntu/Components/Popups/popupUtils.js:50: Error: Cannot assign QObject* to QQuickItem*
在没有 WebView 的选项卡中显示相同的组件和对话框是可行的。为什么它不起作用,我应该怎么做才能实现它?我真的希望这个对话框在那里。
这是我的代码的一部分:
// Change coordinates dialog
Component {
id: dialog
Dialog {
id: dialogue
title: "Save file"
text: "Are you sure that you want to save this file?"
// X
TextField {
id: xCoo
width: units.gu(20)
placeholderText: 'X'
text: xCurrent
}
// Y
TextField {
id: yCoo
width: units.gu(20)
placeholderText: 'Y'
text: yCurrent
}
Button {
id: 'goButton'
text: 'Go'
color: 'green'
onClicked: {
xCurrent = xCoo.text
yCurrent = yCoo.text
PopupUtils.close(cooDialog)
}
}
}
}
WebView {
id: mapContent
anchors.fill: parent
url: "http://webpage.html"
smooth: true
scale: 1
visible: true
}
并采取行动:
// Change coordinates
Action {
id: coordinateAction
objectName: "action2"
iconSource: Qt.resolvedUrl("toolbarIcon.png")
text: i18n.tr("Coordinates")
onTriggered: {
PopupUtils.open(dialog, coordinateAction)
}
}
答案1
实际上,这非常简单。我所做的就是将 onTriggered 信号更改为:PopupUtils.open(dialog, mapContent),其中 mapContent 是 webview 的 ID。现在对话框可以正常工作了!