Qt — выбор нескольких папок/каталогов с помощью диалогового окна

Я хочу добиться чего-то вроде следующего:

введите здесь описание изображения

Где я могу выбрать несколько папок на нескольких дисках и получить пути к выбранным папкам. Qt имеет только грубую функцию выбора нескольких папок, но не поддерживает выбранные папки с других дисков и т. д.

Может ли кто-нибудь подсказать мне, как создать такой диалог? А еще лучше, есть ли у кого-нибудь пример кода, который я мог бы использовать (это расширение старого проекта, и я бы предпочел сэкономить свое время, а не изобретать велосипед!)

Спасибо


person nf313743    schedule 12.08.2011    source источник
comment
я думаю, что вы должны написать код самостоятельно.   -  person Donotalo    schedule 12.08.2011
comment
Верно, но я хотел бы знать, как к этому подойти. Подкласс какой, реализовать что? и т.д   -  person nf313743    schedule 12.08.2011


Ответы (1)


Вы можете использовать QFileSystemModel для представления файловой системы на QTreeView. В этом примере показано, как это сделать.

Для проблемы с флажком, согласно этим спискам архивов:

Самый простой способ сделать это (по крайней мере, я могу придумать) — создать подкласс QDirModel и переопределить flags, data и setData:

flags должен добавить Qt::ItemIsUserCheckable к возвращаемым флагам data должен вернуть Qt::CheckState запрошенного индекса, если параметр роли равен Qt::CheckStateRole setData должен сохранить состояние проверки индекса

Или, что еще лучше, это должно работать с QProxyModel почти так же (в конце концов, «предпочтите композицию объектов наследованию классов»).

Обратите внимание, что класс QDirModel устарел. Вы не можете использовать это в более новых версиях Qt. Я рекомендую использовать QFileSystemModel.

person useraged    schedule 12.08.2011