有没有办法在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上得到的结果:
答案 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));
答案 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)