diff --git a/src/widgets/dialogs/qmessagebox.cpp b/src/widgets/dialogs/qmessagebox.cpp index 2479693130a..a9506f1fc8b 100644 --- a/src/widgets/dialogs/qmessagebox.cpp +++ b/src/widgets/dialogs/qmessagebox.cpp @@ -2783,9 +2783,14 @@ void QMessageBoxPrivate::initHelper(QPlatformDialogHelper *h) auto *messageDialogHelper = static_cast(h); QObjectPrivate::connect(messageDialogHelper, &QPlatformMessageDialogHelper::clicked, this, &QMessageBoxPrivate::helperClicked); + // Forward state via lambda, so that we can handle addition and removal + // of checkbox via setCheckBox() after initializing helper. QObject::connect(messageDialogHelper, &QPlatformMessageDialogHelper::checkBoxStateChanged, - checkbox, &QCheckBox::setCheckState); - + q_ptr, [this](Qt::CheckState state) { + if (checkbox) + checkbox->setCheckState(state); + } + ); messageDialogHelper->setOptions(options); }