Ярлыки

среда, 14 февраля 2018 г.

QML - MessageDialog возвращает предыдущее выбранное значение

Если использовать MessageDialog в QML так же как в Qt, то ничего не выйдет.

    MessageDialog {
        id: msgDialog
        text: qsTr("Current data is not saved.")
        informativeText: "Do you want to save your changes?"
        buttons: MessageDialog.Yes | MessageDialog.No | MessageDialog.Cancel
    }


    function handleChanges(){
        msgDialog.open()
        console.log(msgDialog.result)
        return msgDialog.result
    }

Так как QML декларативный и возвращает значение сразу и не может ждать окончания ввода. Как рекомендация переписать код в более декларативном стиле.

    MessageDialog {
        id: msgDialog
        text: qsTr("Current data is not saved.")
        informativeText: qsTr("Do you want to save your changes?")
        buttons: MessageDialog.Yes | MessageDialog.No | MessageDialog.Cancel
        onYesClicked: {
        }
        onNoClicked: {
        }
        onCancelClicked: {
        }
    }

Более подробно тут.

Комментариев нет:

Отправить комментарий