2010-03-10 82 views
3

在PyQt的一个文件夹,你可以这样做以下,以允许用户选择一个文件允许用户选择文件或在QFileDialog

filename = QtGui.QFileDialog.getOpenFileName(self, "Choose file..") 

但是我想一个QFileDialog打开用户在其中将能够选择文件或目录。我确信我以前在PyQt应用程序中已经看到过这个功能,但我似乎无法找到任何方法来做到这一点。

回答

0

从我记得你需要写你自己的QFileDialog并设置适当的mode。我相信这应该是QFileDialog.ExistingFile & QFileDialog.Directory

你可以尝试写上getExisitingDirectory自己的静态方法筑底(从C++库):

QString QFileDialog::getExistingDirectory(QWidget *parent, 
              const QString &caption, 
              const QString &dir, 
              Options options) 
{ 
    if (qt_filedialog_existing_directory_hook && !(options & DontUseNativeDialog)) 
     return qt_filedialog_existing_directory_hook(parent, caption, dir, options); 
    QFileDialogArgs args; 
    args.parent = parent; 
    args.caption = caption; 
    args.directory = QFileDialogPrivate::workingDirectory(dir); 
    args.mode = (options & ShowDirsOnly ? DirectoryOnly : Directory); 
    args.options = options; 

#if defined(Q_WS_WIN) 
    if (qt_use_native_dialogs && !(args.options & DontUseNativeDialog) && (options & ShowDirsOnly) 
#if defined(Q_WS_WINCE) 
     && qt_priv_ptr_valid 
#endif 
     ) { 
     return qt_win_get_existing_directory(args); 
    } 
#endif 

    // create a qt dialog 
    QFileDialog dialog(args); 
    if (dialog.exec() == QDialog::Accepted) { 
     return dialog.selectedFiles().value(0); 
    } 
    return QString(); 
} 
+3

我不认为这是正确的 - QFileDialog不接受多个文件模式。 (你可以告诉因为枚举值不是2的幂) – Luke 2011-07-05 15:05:58

相关问题