2017-04-09 72 views
0

目前,我可以使用QFileDialoggetExistingDirectory函數選擇文件夾。即使我想我也設法讓對話框顯示這些文件,但我想過濾它們,即只顯示文件夾和*.mp3文件。顯示mp3文件,但用QFileDialog選擇文件夾

QString folder = QFileDialog::getExistingDirectory(this, "test", "", QFileDialog::ReadOnly); 

這可能沒有創建自定義對話框?

回答

2
QFileDialog d(this); 
d.setFileMode(QFileDialog::Directory); 
d.setNameFilter("*.mp3"); 
if (d.exec()) 
    qDebug() << d.selectedFiles(); 
+0

我的主窗口是全屏。使用'getExistingDirectory'使對話框顯示出來,但是這樣焦點仍然在'MainWindow'上。 – NaCl

+0

如果你將'this'添加到'QFileDialog'的構造函數中? (見編輯後) – m7913d

+0

多麼愚蠢的錯誤!謝謝! – NaCl

0

我現在在移動rt。僅提供一種提示......

在Windows和macOS上,此靜態函數將使用本機文件對話框而不是QFileDialog。但是,本機Windows文件對話框不支持在目錄選擇器中顯示文件。你需要通過DontUseNativeDialog來顯示使用QFileDialog的文件。 (從qfiledialog文檔)

因此,使用設定的 'QFileDialog :: DontUseNativeDialog' 選項 'setflags'

然後使用文件對話框的 '使用setfilter' 爲您的MP3文件過濾器..

+0

你不需要手動設置'QFileDialog :: DontUseNativeDialog',根據你的請求設置,Qt本身將自動決定不使用本機對話框。 – m7913d

+0

嗯....文件是有點誤導....無論如何..謝謝 – Naidu

相關問題