Показать сообщение - PullRequest
       36

Показать сообщение

0 голосов
/ 23 апреля 2019

Можно ли отобразить диалоговое окно 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 Ответ

1 голос
/ 23 апреля 2019

Вы назвали "aboutDialog", который является идентификатором в AboutDialog.Думайте об этом, как будто вы добавляете объект, например, добавляете Rectangle ... который имеет свой собственный файл ... и вы можете "создать экземпляр" его, добавив объект следующим образом:

...

ApplicationWindow {

...

    AboutDialog {
        id: aboutDlg
    }

...
}

Вы можете найтипример ЗДЕСЬ

Вы также можете немного оптимизировать и поместить AboutDialog в Loader .

...