web-dev-qa-db-fra.com

la boîte de dialogue Ouvrir un fichier peut-elle être utilisée pour sélectionner un dossier?

La boîte de dialogue Windows "Rechercher un dossier" est très gênante car:

  • il n'a pas de boîte Path où je peux coller le chemin que je veux (par exemple depuis Total Commander)
  • il commence toujours à partir du bureau avec tout fermé

Existe-t-il un moyen d'utiliser la boîte de dialogue "Ouvrir un fichier" (qui est bien meilleure) pour sélectionner un dossier? Un drapeau ou une option ou quelque chose?

Contexte: le calibre eLibrary manager qui est écrit en Python et Qt.

Il s'affiche actuellement comme sur la gauche. Je voudrais qu'il s'affiche comme à droite BrowserFileDialog

ou encore mieux, comme la boîte de dialogue Ouvrir un fichier: OpenFileDialog

59
Vladimir Alexiev

Vous pouvez essayer celui-ci:

QString QFileDialog::getExistingDirectory ( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), Options options = ShowDirsOnly ) [static]

Celui-ci est utilisé pour choisir un répertoire et fera apparaître une boîte de dialogue comme celle que vous affichez enfin.

Démo:

 QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),
                                             "/home",
                                             QFileDialog::ShowDirsOnly
                                             | QFileDialog::DontResolveSymlinks);
87
liuyanghejerry

Vous pouvez définir le mode de fichier dans QFileDialog sur QFileDialog::Directory

voir http://qt-project.org/doc/qt-5.0/qtwidgets/qfiledialog.html#FileMode-enum

Ou vous pouvez utiliser QFileDialog::setOption avec une valeur QFileDialog::ShowDirsOnly

22
Ranjith