2010-10-15 21 views
46

„Przeglądaj Do folderu” dialog Windows jest bardzo niewygodne, ponieważ:Czy za pomocą okna dialogowego Otwórz plik można wybrać folder?

  • nie ma pola Path gdzie mogę wkleić ścieżkę chcę (np Total Commandera)
  • zawsze zaczyna z pulpitu z wszystko zamknięte

Czy istnieje sposób, aby wybrać okno dialogowe "Otwórz plik" (co jest znacznie lepszym), aby wybrać folder? Jakiś sztandar lub opcja czy coś takiego?

Kontekst: calibre eLibrary manager, który jest napisany w języku Python i Qt.

Obecnie wyświetla się jak po lewej. Chciałbym go do wyświetlania jako na prawo BrowserFileDialog

lub nawet lepiej, jak oknie dialogowym Otwieranie pliku: OpenFileDialog

+0

Ja też nienawidzę, że nie można używać skrótów w oknie „Przeglądanie w poszukiwaniu folderu”. Dlaczego już tego nie naprawili ?! – cyco130

Odpowiedz

19

Można ustawić tryb pliku w QFileDialog do QFileDialog::Directory

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

Lub Można użyć QFileDialog::setOption o wartości QFileDialog::ShowDirsOnly

+0

The [code] (http://bazaar.launchpad.net/~kovid/calibre/trunk/annotate/head%3A/src/calibre/gui2/__init__.py#L518) używa QFileDialog.getExistingDirectory (QFileDialog.Directory) , a to wyświetla niewygodne okno dialogowe "Przeglądaj w poszukiwaniu folderu". –

+0

Czy powinienem użyć czegoś takiego? dialog = new QFileDialog(); dialog.setOption (QFileDialog.ShowDirsOnly, true); dialog.getOpenFileName (QFileDialog.Directory); –

+0

QFileDialog :: DirectoryOnly jest przestarzałe od Qt 4.5: Spróbuj użyć metody setOption() – Ranjith

56

Możesz wypróbować ten:

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

Ten służy do wyboru katalogu i wyskakuje okno dialogowe, takie jak na przykład.

Demo:

QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"), 
              "/home", 
              QFileDialog::ShowDirsOnly 
              | QFileDialog::DontResolveSymlinks); 
Powiązane problemy