2016-07-22 3 views
1

У меня есть объект QFileDialog где мне нужно пользователю выбрать директориюQFileDialog каталог предв

QFileDialog dlg(this, tr("Select directory")); 
dlg.setDirectory(currentDir); 
dlg.setFileMode(QFileDialog::Directory); 
dlg.setOptions(QFileDialog::ShowDirsOnly | QFileDialog::ReadOnly); 

моя структура папок, например

<root> 
    <dir1> 
    <dir2> 

когда currentDir является <root>/dir1 я хочу диалоговое окно для укажите в директории <root> и выберите dir1 в диалоговом окне (не только в текстовой форме, но и, если вы ее нажали)

это возможно, и как?

/редактировать: я попытался

dlg.setDirectory("<root>"); 
dlg.selectFile("dir1"); 

, что привело в диалоге, чтобы установить правильный каталог и заполнить редактировать filename строки, но не выбрать его в списке файлов (но то вполне требуется при наличии много похожих имен dir).

веселит

+0

Я попробовал несколько вещей с 'QFileDialog', но это не сработало. Qt 5.6.0 здесь. Использование 'QUrl' не изменило поведения. Ни выбор не настроен, ни текстовое поле не заполнено. Это может быть ошибка. Также корректировка некоторых флагов без успеха. Поскольку в документации указано, что 'selectFile' должен быть таким. Может быть, здесь есть проблема. – maxik

ответ

1

selectFile() должен сделать трюк:

QFileDialog dlg(this, tr("Select directory")); 

if(currentDir == "<root>/dir1") { 
    dlg.selectFile(currentDir); 
} 
else { 
    dlg.setDirectory(currentDir); 
} 

dlg.setFileMode(QFileDialog::Directory); 
dlg.setOptions(QFileDialog::ShowDirsOnly | QFileDialog::ReadOnly); 
+0

приятно, но это только половина проблемы. см. редактирование в вопросе – Zaiborg

+0

Вы пытались установить режим файла перед selectFile()? – wasthishelpful

+0

да; в основном вы берете мой первый фрагмент кода и добавляете материал редактирования – Zaiborg

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