Qt 如何从菜单栏QML打开对话框

Qt 如何从菜单栏QML打开对话框,qt,dialog,qml,qtquick2,Qt,Dialog,Qml,Qtquick2,我正试图从菜单栏打开一个“关于”对话框 我有一个MainMenuBar.qml,看起来像这样: import QtQuick 2.12 import './dialogs' Labs.MenuBar { // Various menus omitted AboutDialog { id: about_dialog } Labs.Menu { title: qsTr('&Help') Labs.Men

我正试图从菜单栏打开一个“关于”对话框

我有一个MainMenuBar.qml,看起来像这样:

import QtQuick 2.12
import './dialogs'

Labs.MenuBar {

    // Various menus omitted

    AboutDialog {
        id: about_dialog
    }

    Labs.Menu {
        title: qsTr('&Help')

        Labs.MenuItem {
            text: qsTr('&About')
            onTriggered: about_dialog.open()
        }
    }
}
以及我的AboutDialog.qml:

import QtQuick.Controls 2.13
import QtQuick.Layouts 1.13

Dialog {
    title: qsTr('id_about')
    width: 500
    height: 350
    standardButtons: Dialog.Ok

    Page {
        anchors.fill: parent

        header: RowLayout {
            Image {
                Layout.margins: 16
                source: "../ic_home.png"
            }
        }

        Label {
            anchors.fill: parent
            anchors.margins: 32
            wrapMode: Text.WordWrap
            text: qsTr("Hello world")
        }
    }
}
单击“关于”时,我得到:

/src/MainMenuBar.qml:qml对话框:找不到任何打开弹出窗口的窗口


我想这是因为我是从菜单栏打开的,而不是从窗口打开的——这可能吗?我该怎么办呢?

没关系,我想出来了。 AboutDialog.qml不应在MainMenuBar.qml中声明,而应在main.qml中声明

MainMenuBar.qml

import QtQuick 2.12
import './dialogs'

Labs.MenuBar {

    // Various menus omitted
    Labs.Menu {
        title: qsTr('&Help')

        Labs.MenuItem {
            text: qsTr('&About')
            onTriggered: about_dialog.open()
        }
    }
}
main.qml

Item {
   MainMenuBar { }

    AboutDialog {
        id: about_dialog
    }
}