diff -r -w -u dialogs.orig/qfiledialog.cpp dialogs/qfiledialog.cpp --- dialogs.orig/qfiledialog.cpp 2017-10-02 11:43:38.000000000 +0300 +++ dialogs/qfiledialog.cpp 2017-10-19 10:38:38.877450200 +0300 @@ -344,6 +344,7 @@ { Q_D(QFileDialog); d->init(); + d->s_IconProvider = 0; } /*! @@ -361,6 +362,7 @@ { Q_D(QFileDialog); d->init(QUrl::fromLocalFile(directory), filter, caption); + d->s_IconProvider = 0; } /*! @@ -371,6 +373,7 @@ { Q_D(QFileDialog); d->init(args.directory, args.filter, args.caption); + d->s_IconProvider = 0; setFileMode(args.mode); setOptions(args.options); selectFile(args.selection); @@ -1981,7 +1984,11 @@ { Q_D(QFileDialog); if (!d->usingWidgets()) + { + d->s_IconProvider = provider; return; + } + d->s_IconProvider = 0; d->model->setIconProvider(provider); //It forces the refresh of all entries in the side bar, then we can get new icons d->qFileDialogUi->sidebar->setUrls(d->qFileDialogUi->sidebar->urls()); @@ -2871,6 +2878,8 @@ Qt::WindowStates preState = q->windowState(); model = new QFileSystemModel(q); + if(s_IconProvider) + model->setIconProvider(s_IconProvider); model->setFilter(options->filter()); model->setObjectName(QLatin1String("qt_filesystem_model")); if (QPlatformFileDialogHelper *helper = platformFileDialogHelper()) diff -r -w -u dialogs.orig/qfiledialog_p.h dialogs/qfiledialog_p.h --- dialogs.orig/qfiledialog_p.h 2017-10-02 11:43:38.000000000 +0300 +++ dialogs/qfiledialog_p.h 2017-10-19 10:38:38.880458300 +0300 @@ -234,6 +234,7 @@ // data QStringList watching; QFileSystemModel *model; + QFileIconProvider *s_IconProvider; #if QT_CONFIG(fscompleter) QFSCompleter *completer;