Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QFileDialog预选目录_C++_Qt_Qt5 - Fatal编程技术网

C++ QFileDialog预选目录

C++ QFileDialog预选目录,c++,qt,qt5,C++,Qt,Qt5,我有一个QFileDialog对象,需要用户在其中选择一个目录 QFileDialog dlg(this, tr("Select directory")); dlg.setDirectory(currentDir); dlg.setFileMode(QFileDialog::Directory); dlg.setOptions(QFileDialog::ShowDirsOnly | QFileDialog::ReadOnly); 我的文件夹结构就是一个例子 <root> <

我有一个QFileDialog对象,需要用户在其中选择一个目录

QFileDialog dlg(this, tr("Select directory"));
dlg.setDirectory(currentDir);
dlg.setFileMode(QFileDialog::Directory);
dlg.setOptions(QFileDialog::ShowDirsOnly | QFileDialog::ReadOnly);
我的文件夹结构就是一个例子

<root>
  <dir1>
  <dir2>
这导致对话框设置正确的目录并填充
文件名
行编辑,但没有在文件列表中选择它(但当有许多相似的目录名时,这是非常必要的)

干杯应该可以做到:

QFileDialog dlg(this, tr("Select directory"));

if(currentDir == "<root>/dir1") {
    dlg.selectFile(currentDir);
}
else {
    dlg.setDirectory(currentDir);
}

dlg.setFileMode(QFileDialog::Directory);
dlg.setOptions(QFileDialog::ShowDirsOnly | QFileDialog::ReadOnly);
QFileDialog dlg(这个,tr(“选择目录”); 如果(currentDir==“/dir1”){ dlg.selectFile(currentDir); } 否则{ dlg.setDirectory(currentDir); } setFileMode(QFileDialog::Directory); dlg.setOptions(QFileDialog::ShowDirsOnly | QFileDialog::ReadOnly);
不错,但这只是问题的一半。参见问题中的编辑在选择file()之前是否尝试设置文件模式?是;基本上,您可以获取我的第一个代码片段并添加编辑内容。我用
QFileDialog
尝试了几件事,但都没有成功。不过,这里是Qt5.6.0。使用
QUrl
不会改变行为。既不调整所选内容,也不填充文本框。这可能是个bug。也调整了一些标志,但没有成功。正如文档中所述,
selectFile
。也许这里有个问题。
QFileDialog dlg(this, tr("Select directory"));

if(currentDir == "<root>/dir1") {
    dlg.selectFile(currentDir);
}
else {
    dlg.setDirectory(currentDir);
}

dlg.setFileMode(QFileDialog::Directory);
dlg.setOptions(QFileDialog::ShowDirsOnly | QFileDialog::ReadOnly);