2014-09-27 4 views
0

Я новичок в изучении библиотеки Qt, и мне трудно работать с QFileDialog. Я хочу, чтобы пользователь мог выбрать каталог, но также иметь возможность просматривать файлы и папки, чтобы они знали, какую директорию они должны выбрать. Я видел, что подобные вещи были опубликованы в другом месте, но все, что я пробовал, не повлияло на результат.QFileDialog Просмотр файлов и папок при выборе каталога

Я попытался создать свой собственный диалог и установки режима в каталог, в котором говорится, что он должен отображать как файлы и папки:

QFileDialog myDialog(this); 
    myFileExplorer.setFileMode(QFileDialog::Directory); 
    myFileExplorer.setDirectory("C:/"); 
    QString file = myFileExplorer.exec(); 

И я попытался использовать getExistingDirectory как хорошо, но с этим функция всегда показывает только каталог. Благодаря

+0

Вы пытались передать последний аргумент ввода для getExistingDirectory равным 0? –

+0

Он показывает файлы на OS X, но не показывает файлы в Windows. Это ошибка Qt. Возможно, вам нужно посмотреть, можно ли вызвать требуемый диалог непосредственно из Win API. Или вам нужно реализовать просмотр/выбор файлов. –

ответ

2
QString getExistingDirectory (QWidget * parent = 0, const QString & caption = QString(), 
const QString & dir = QString(), Options options = ShowDirsOnly) 

Значение по умолчанию опции установлено, чтобы показать только каталоги, вы должны изменить его

QFileDialog::DontUseNativeDialog 

Но, к сожалению, вы не сможете использовать собственный диалог.

+0

интересно, что Win API не поддерживает такие параметры, или это ошибка Qt с родными диалоги. –

+1

в C# это называется commonOpenFileDialog, и он также не поддерживает эту опцию. Некоторое время назад был задан вопрос о stackoverflow - http://stackoverflow.com/questions/8142109/how-can-i-make-commonopenfiledialog-select-folders-only-but-still-show-files - так что я верю это не ошибка Qt. –

+0

Хорошо, что сработало, спасибо! Таким образом, в конечном итоге Win API не поддерживает такую ​​функциональность, поэтому мы застряли с использованием неродного диалога. –

Смежные вопросы