您需要通過QFileDialog::DontUseNativeDialog
選項。從getExistingDirectory
的documentation:
在Windows和OS X,這個靜態函數將使用本地文件 對話框而不是QFileDialog。但是,本機Windows文件對話框 不支持在目錄選擇器中顯示文件。您需要 傳遞DontUseNativeDialog以使用QFileDialog顯示文件。在Windows CE的 上,如果設備沒有本機文件對話框,將使用QFileDialog 。
過濾顯示通過擴展名的文件,你將不得不做稍微:
QFileDialog dlg(nullptr, tr("Choose Directory"));
dlg.setOptions(QFileDialog::DontUseNativeDialog | QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
dlg.setFileMode(QFileDialog::Directory);
dlg.setNameFilter(tr("Directories with device files (*.in)"));
if (dlg.exec())
qDebug() << dlg.selectedFiles();
當我嘗試這樣做,仍顯示不符合過濾條件的文件,但在灰色(我試着在MacOS上,也許你會在Windows上有更多的運氣)。
沒有標準的方法來阻止用戶選擇不包含與過濾器匹配的文件的文件夾。一種解決方案是從QFileDialog
派生自己的類並覆蓋accept
函數(不會從覆蓋中調用QFileDialog::accept
將阻止對話框關閉)。
改爲使用getOpenFileName。 – 2016-02-13 21:52:21