首页 > 解决方案 > 将参数传递给 MessageDialog 以根据用户与对话框的交互进一步处理它

问题描述

有这个 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?
 }

}

现在我想知道如果用户选择按钮,如何parameteronParameterChanged插槽传递到问题对话框以便能够处理。parameterYes

标签: qtqml

解决方案


通过使用Property Attributes解决了问题。

我为 定义了一个新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()
    }

}

推荐阅读