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?
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!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With