Voj*_*vic 13 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_()
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)
我知道,我的答案有些棘手并且看起来很小,但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)
从这里得到那个方法
| 归档时间: |
|
| 查看次数: |
27945 次 |
| 最近记录: |