选择文件夹后,QFileDialog :: getExistingDirectory不会关闭

pra*_*tsm 2 qt qfiledialog

在Qt,

QFileDialog *dlg = new QFileDialog(); 
QDir dir = dlg->getExistingDirectory(this, tr("Choose folder"), qgetenv("HOME"));
Run Code Online (Sandbox Code Playgroud)

打开文件夹选择对话框.选择文件夹后(按选择按钮),文件夹不会自动关闭.所以我尝试过:

if(dlg->close() == true) delete(dlg);
Run Code Online (Sandbox Code Playgroud)

当我调试dlg-> close()时返回true并且命中了删除代码(dlg).文件夹选择器对话框仍未关闭.

我正在使用Ubuntu 11.10 64位操作系统.使用存储库中的Qt库.

我的最终目的是显示文件夹选择器对话框,一旦选择了文件夹,对话框应该关闭.之后,处理应该继续.这该怎么做?

提前致谢.

ale*_*sdm 6

即使QFileDialog::getExistingDirectory是静态的并且不需要QFileDialog对象工作,它也应该在最终选择目录时关闭对话框窗口.默认情况下,该函数尝试打开本机文件对话框窗口,这似乎在某些平台上会导致一些问题.

您应该尝试通过添加选项强制非本机对话框DontUseNativeDialog:

QString dir = QFileDialog::getExistingDirectory(
    this, 
    tr("Choose folder"),
    QDesktopServices::storageLocation(QDesktopServices::HomeLocation),
    QFileDialog::ShowDirsOnly | QFileDialog::DontUseNativeDialog);
Run Code Online (Sandbox Code Playgroud)

并删除另外两行(使用new QFileDialogif(dlg->close()) ...).