2016-07-07 4 views
0

Я хочу, чтобы пользователь мог выбрать несколько папок, а затем сохранить пути этих папок в списке.Qt - получить QFileDialog для выбора и возврата нескольких папок?

Как я могу это сделать? Мой текущий QFileDialog выглядит следующим образом:

str = QtGui.QFileDialog.getExistingDirectory(self, "Open Directory", /folder/subfolder, QtGui.QFileDialog.DontResolveSymlinks) 

Но, конечно, это только позволяет мне выбрать одну папку. Как я могу изменить его, чтобы выбрать несколько папок и вернуть их в список?

Спасибо!

ответ

1

Насколько я знаю, вы не можете сделать это с помощью родного FileDialog. Там, однако, существует обходной путь, в котором вы не используете нативный диалог:

file_dialog = QFileDialog() 
file_dialog.setFileMode(QFileDialog.DirectoryOnly) 
file_dialog.setOption(QFileDialog.DontUseNativeDialog, True) 
file_view = file_dialog.findChild(QListView, 'listView') 

# to make it possible to select multiple directories: 
if file_view: 
    file_view.setSelectionMode(QAbstractItemView.MultiSelection) 
f_tree_view = file_dialog.findChild(QTreeView) 
if f_tree_view: 
    f_tree_view.setSelectionMode(QAbstractItemView.MultiSelection) 

if file_dialog.exec(): 
    paths = file_dialog.selectedFiles(): 

Это решение является немного неуклюжим, однако, но это лучшее решение, которое я знаю, кроме прокатки свой собственный диалог.

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