为什么 QFileDiaglog 方法目录不显示当前目录?
Why doesn't QFileDiaglog method directory show the current directory?
当我启动程序时,文件对话框位于某个目录中。然后我移动到其他目录并选择一些文件。选择文件后,我尝试获取从中选择文件的当前目录。但它不会返回我当前目录,而是返回程序启动时文件对话框最初所在的原始目录。代码片段如下:
QFileDialog * fileDialog = new QFileDialog(this);
fileDialog->setFileMode(QFileDialog::ExistingFiles);
QListView* list = fileDialog->findChild<QListView*>("listView");
if(list)
{
list->setSelectionMode(QAbstractItemView::MultiSelection);
}
QTreeView* tree = fileDialog->findChild<QTreeView*>();
if(tree)
{
tree->setSelectionMode(QAbstractItemView::MultiSelection);
}
if(fileDialog->exec())
{
if(fileDialog->selectedFiles().size()>0)
{
QDir dir = fileDialog->directory();
fileDialog->update();
qDebug()<<dir.absolutePath();
}
}
你能告诉我我犯了什么错误吗?如何获取文件对话框当前所在目录的绝对路径?
QFileDialog 有几个静态方法,这些方法返回选定的文件和当前目录 getExistingDirectory、getOpenFileName、getOpenFileNames、getSaveFileName。您可能希望使用这些静态函数之一。另一个选项是子类 QFileDialog 并重写 exec 方法以返回当前目录。http://qt-project.org/doc/qt-4.8/qfiledialog.html
您可以像其他人建议的那样用静态方法替换它,但我认为首先您应该修复内存泄漏!
请注意,如果您编写代码,您正在创建一个新QFileDialog
这就是为什么您每次都会得到相同的目录。此对话框仅使用一次,当this
对象(可能是主窗口)时,它将被删除。
因此,要么使用静态版本,要么在主窗口类中创建一个字段,只创建一个对话框并在需要时重复使用它。
相关文章:
- 为什么这不会在当前目录中生成文件?
- 筛选 QFileDialog 中显示的目录
- Qt C++括号匹配和突出显示当前线路功能无法协同工作
- 在gdb中显示当前函数的调用函数
- 下载到当前目录
- 如何使用GetPrivateProfilestring()从当前目录上升级目录
- g++ 不会先搜索当前目录中的标头
- 如何使用<windows.h获取当前目录名称> C++
- 如何使用 FMOD 和 C++ 显示当前音乐位置
- 如何使肮脏忽略当前目录
- 如何将文件写入当前目录而不是Bazel-Out
- GetPrivateprofilestring 不会获取当前目录中的 ini 文件
- 删除列表向量中的元素并显示当前列表
- 无法写入可执行对象的当前目录中的文件夹
- C - 如何获得C 可执行文件的当前目录
- 获取当前目录,我可以在不知道最大缓冲区大小的情况下进行
- 仅在当前目录中搜索标签
- c++ GetPrivateProfileString 从当前目录读取 ini 文件
- 为什么我在Linux的C 中获得错误的当前目录
- 为什么 QFileDiaglog 方法目录不显示当前目录?