Qt中的文件夹浏览器对话框

时间:2012-11-08 22:50:07

标签: qt folderbrowserdialog

有没有办法在Qt中打开文件夹浏览器对话框?当我使用QFileDialog Directory文件模式时,即使我指定ShowDirsOnly选项,我也会获得标准文件对话框。我更喜欢使用一个对话框,要求用户从目录树中选择一个目录。

这是我正在使用的PySide代码:

from PySide import QtGui
app = QtGui.QApplication([])
dialog = QtGui.QFileDialog()
dialog.setFileMode(QtGui.QFileDialog.Directory)
dialog.setOption(QtGui.QFileDialog.ShowDirsOnly)
dialog.exec_()

这是我在Windows 7上得到的结果: File selection dialog

4 个答案:

答案 0 :(得分:10)

您调用setFileMode()setOption()的顺序似乎很重要。确保您先拨打setFileMode()

QFileDialog dialog;
dialog.setFileMode(QFileDialog::Directory);
dialog.setOption(QFileDialog::ShowDirsOnly);
...

答案 1 :(得分:5)

我知道,我的答案有点棘手,看起来很小,但QFileDialog静态方法(如getExistingDirectory())使用原生对话框,因此只能进行有限的自定义。

但是,如果您创建QFileDialog实例,则可以获得一个对话框 定制 - 只要你很高兴搞乱实时对话。

例如,这应显示具有可扩展目录的树视图 你可以选择(希望,将此代码移植到PySide一定不是问题):

QFileDialog *fd = new QFileDialog;
QTreeView *tree = fd->findChild <QTreeView*>();
tree->setRootIsDecorated(true);
tree->setItemsExpandable(true);
fd->setFileMode(QFileDialog::Directory);
fd->setOption(QFileDialog::ShowDirsOnly);
fd->setViewMode(QFileDialog::Detail);
int result = fd->exec();
QString directory;
if (result)
{
    directory = fd->selectedFiles()[0];
    qDebug()<<directory;
}

here

获得该方法

答案 2 :(得分:3)

试试这行代码,它会显示一个文件夹浏览对话框:

 ui->txtSaveAddress->setText(folderDlg.getExistingDirectory(0,"Caption",QString(),QFileDialog::ShowDirsOnly));

enter image description here

答案 3 :(得分:3)

这对我有用:

def getDir(self):
    dialog = QtGui.QFileDialog()
    dialog.setFileMode(QtGui.QFileDialog.Directory)
    dialog.setOption(QtGui.QFileDialog.ShowDirsOnly)
    directory = dialog.getExistingDirectory(self, 'Choose Directory', os.path.curdir)