Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

QML: MessageDialog closes on click outside

I'm trying to show an QML MessageDialog with Qt 6.4.3. This dialog should be closed with the provided button.

import QtQuick
import QtQuick.Controls
import QtQuick.Dialogs

ApplicationWindow  {
    id: window

    width: 800
    height: 600

    visible: true

    title: qsTr("Hello World")

    Component.onCompleted: dialog.open()

    MessageDialog{
        id: dialog

        modality: Qt.ApplicationModal

        title: "Test Dialog"
        text: "My Text"

        buttons: MessageDialog.Ok
    }
}

PROBLEM: The dialog is dismissed, if the user clickes outside the dialog. I would expect the dialog to stay visible until the user pressed the OK button.

What is my mistake in the following example? How can I achieve, that the dialog stays visible until the user pressed the button?

like image 954
Jürgen Lutz Avatar asked Oct 20 '25 01:10

Jürgen Lutz


1 Answers

If you're interested in a workaround, you can force the dialog to stay up until the user accepts by catching the reject and forcing the dialog to open again:

import QtQuick
import QtQuick.Controls
import QtQuick.Dialogs
Page {
    MessageDialog{
        id: dialog
        modality: Qt.ApplicationModal
        title: "Test Dialog"
        text: "My Text"
        buttons: MessageDialog.Ok
        onRejected: Qt.callLater(dialog.open)
    }
    Button {
        text: qsTr("Open")
        anchors.horizontalCenter: parent.horizontalCenter
        y: parent.height * 2 / 10
        onClicked: dialog.open()
    }
}

You can Try it Online!

like image 72
Stephen Quan Avatar answered Oct 22 '25 04:10

Stephen Quan



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!