diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index 1d792fd89e5..d414cbf841f 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -373,10 +373,16 @@ QFileDialog::QFileDialog(const QFileDialogArgs &args) */ QFileDialog::~QFileDialog() { -#if QT_CONFIG(settings) Q_D(QFileDialog); +#if QT_CONFIG(settings) d->saveSettings(); #endif + if (QPlatformFileDialogHelper *platformHelper = d->platformFileDialogHelper()) { + // QIOSFileDialog emits directoryChanged while hiding, causing an assert + // because of a partially destroyed QFileDialog. + QObjectPrivate::disconnect(platformHelper, &QPlatformFileDialogHelper::directoryEntered, + d, &QFileDialogPrivate::nativeEnterDirectory); + } } /*!