无法在带有 webview 的选项卡中显示弹出对话框

无法在带有 webview 的选项卡中显示弹出对话框

我的应用使用标签,其中一个标签使用 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。现在对话框可以正常工作了!

相关内容