如何在qml中截取对话框的红色“x”关闭按钮的信号?

Dialog
{
    id : dialog1
    visible  : false
    title : "dialog1"

    onRejected:
    {
        console.log("Red button x clicked signal")  // Not working
    }
    Button
    {
        id: exitButton
        text : "Exit"
        onClicked :
        {
           console.log("exit button clicked") // this works
           robotCalibrationDialog.visible = false
        }
    }

我已经尝试了qml对话框的所有信号,但似乎都没有为x红色按钮工作。

最佳答案

在这里,我希望“X”按钮的行为与被拒绝时的行为完全相同。您可以根据需要调用不同的信号,但我个人认为该信号与被拒绝的信号相同。

signal yesButtonClicked()
signal noButtonClicked()
signal rejectedButtonClicked()
signal acceptedButtonClicked()
property bool xButton: true

Dialog{

    id: dialogId
    title: dialogTitle
    onYes: {
        xButton = false
        yesButtonClicked()
    }
    onNo: {
        xButton = false
        noButtonClicked()
    }
    onRejected: {
        xButton = false
        rejectedButtonClicked()
    }
    onAccepted: {
        xButton = false
        acceptedButtonClicked()
    }
    onVisibilityChanged: {
        if (!this.visible && xButton){
            rejectedButtonClicked()
        }
        if (this.visible){
            xButton = true
        }
    }

10-04 12:00