2010-10-15 15 views
46

La "Buscar carpeta" diálogo de Windows es muy incómodo porque:¿se puede usar el cuadro de diálogo Abrir archivo para seleccionar una carpeta?

  • no tiene cuadro Ruta de acceso en el que puedo pegar el camino que quiero (por ejemplo, de Total Commander)
  • siempre empieza desde el escritorio con todo cerrado

¿Hay alguna manera de utilizar el cuadro de diálogo "Abrir archivo" (que es mucho mejor) para seleccionar una carpeta? ¿Alguna bandera u opción o algo así?

Contexto: la calibre eLibrary manager que está escrito en Python y Qt.

En la actualidad se muestra como a la izquierda. Me gustaría que se muestre tan a la derecha BrowserFileDialog

o incluso mejor, ya que el cuadro de diálogo Abrir archivo: OpenFileDialog

+0

También odio que no se puede usar atajos en el diálogo "Buscar carpeta". ¿Por qué no lo arreglan ya? – cyco130

Respuesta

19

se puede establecer el modo de archivo en QFileDialog-QFileDialog::Directory

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

o puede utilizar QFileDialog::setOption con valor QFileDialog::ShowDirsOnly

+0

El [code] (http://bazaar.launchpad.net/~kovid/calibre/trunk/annotate/head%3A/src/calibre/gui2/__init__.py#L518) utiliza QFileDialog.getExistingDirectory (QFileDialog.Directory) , y esto muestra el incómodo cuadro de diálogo "Buscar carpeta". –

+0

¿Debo usar algo como esto? de diálogo = new QFileDialog(); dialog.setOption (QFileDialog.ShowDirsOnly, true); dialog.getOpenFileName (QFileDialog.Directory); –

+0

QFileDialog :: DirectoryOnly está obsoleto desde Qt 4.5: prueba usar setOption() – Ranjith

56

Se puede probar esto:

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

Ésta se utiliza para elegir un directorio, y emergerá un diálogo como se muestra en el último.

Demostración:

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