Передайте параметр в MessageDialog для дальнейшей обработки на основе взаимодействия пользователя с диалогом - PullRequest
0 голосов
/ 22 февраля 2020

Это диалоговое окно сообщения QML:

MessageDialog {
            id: questionDialog
            icon: StandardIcon.Question
            standardButtons: StandardButton.Yes | StandardButton.No
            title: qsTr("Question") + editorScene.emptyString
            text: qsTr("Do stuff?") + editorScene.emptyString
            onYes: {
                console.log("I want to be able to process parameter here")
            }
            onNo: {
                console.log("Do nothing")
            }
}

Внутри слота onParameterChanged я открываю диалоговое окно во время передачи сигнала parameterChanged. Этот сигнал передает parameter:

onParameterChanged: {

 if (parameter) { // "parameter" is passed by parameterChanged signal
     questionDialog.open() // How can I pass "parameter" to dialog when opening it?
 }

}

Теперь мне интересно, как можно передать parameter из слота onParameterChanged в вопросный диалог, чтобы иметь возможность обрабатывать parameter, если пользователь выбирает Yes кнопка.

1 Ответ

1 голос
/ 22 февраля 2020

Проблема решена с помощью Атрибуты свойства .

Я определил новый атрибут property для MessageDialog:

MessageDialog {
    id: questionDialog

    property string parameterName: ""

    onYes: {
        console.log("Parameter to be processed:", parameterName)
    }
}

Затем я установил атрибут свойства перед открытием диалога:

onParameterChanged: {

    if (parameter) { // "parameter" is passed by parameterChanged signal
        questionDialog.parameterName = parameter // Set property attribute
        questionDialog.open()
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...