Qt 如何从菜单栏QML打开对话框
我正试图从菜单栏打开一个“关于”对话框 我有一个MainMenuBar.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
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
}
}