Показать сообщение
Можно ли отобразить диалоговое окно QML, когда пользователь нажимает кнопку в окне QML?
Пример:
Когда пользователь щелкает в строке меню в Справке -> О диалоговом окне "О программе":
import QtQuick 2.12
import QtQuick.Layouts 1.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
import "components"
ApplicationWindow {
id: window
visible: true
width: 1040
height: 480
aboutDlg: aboutDialog {} // does not work...
menuBar: MenuBar {
Menu {
title: qsTr("Help")
MenuItem {
text: qsTr("About")
onTriggered: aboutDlg.open();
}
}
...
компоненты /AboutDialog.qml
import QtQuick 2.2
import QtQuick.Dialogs 1.1
MessageDialog {
id: aboutDialog
title: "May I have your attention please"
text: "It's so cool that you are using Qt Quick."
onAccepted: {
console.log("And of course you could only agree.")
Qt.quit()
}
}
Когда я удаляю линию boutDlg: aboutDialog {} // does not work...
следующая ошибка сообщается при нажатии на пункт меню About:
qrc: /main.qml: 61: ReferenceError: aboutDlg не определен
Как мне этого добиться?
1 ответ
Вы назвали aboutDialog, который является идентификатором в AboutDialog. Думайте об этом, как будто вы добавляете объект, например, добавляете Rectangle... который имеет свой собственный файл... и вы можете "создать экземпляр" его, добавив объект следующим образом:
...
ApplicationWindow {
...
AboutDialog {
id: aboutDlg
}
...
}
Вы можете найти пример ЗДЕСЬ
Вы также можете немного оптимизировать и поместить AboutDialog в Loader.