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

Voj*_*vic 13 qt folderbrowserdialog

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

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

from PySide import QtGui
app = QtGui.QApplication([])
dialog = QtGui.QFileDialog()
dialog.setFileMode(QtGui.QFileDialog.Directory)
dialog.setOption(QtGui.QFileDialog.ShowDirsOnly)
dialog.exec_()
Run Code Online (Sandbox Code Playgroud)

这是我在Windows 7上得到的结果: 文件选择对话框

Chr*_*ris 10

看来,顺序调用setFileMode()setOption()事项.确保你setFileMode()先打电话:

QFileDialog dialog;
dialog.setFileMode(QFileDialog::Directory);
dialog.setOption(QFileDialog::ShowDirsOnly);
...
Run Code Online (Sandbox Code Playgroud)


tro*_*ane 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;
}
Run Code Online (Sandbox Code Playgroud)

这里得到那个方法