프로그램을 시작할 때 filedialog는 특정 디렉토리에 있습니다. 그런 다음 다른 디렉토리로 이동하고 일부 파일을 선택합니다. 일단 파일을 선택하면 파일이 선택된 현재 디렉토리를 얻으려고합니다. 하지만 그것은 현재 디렉토리를 반환하지 않습니다, 그것은 나에게 filedialog 처음에 프로그램이 시작되었을 때 원래 디렉토리를 반환합니다. 코드 스 니펫은 다음과 같습니다.QFileDiaglog 메서드 디렉터리에 현재 디렉터리가 표시되지 않는 이유는 무엇입니까?
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();
}
}
내가하는 실수는 무엇이라고 생각하십니까? filedialog가 현재 존재하는 디렉토리의 절대 경로를 어떻게 얻을 수 있습니까?
[한 호출 정적 메서드가 아닌] 복잡한 접근법을 사용하는 이유가 있습니까? (http://qt-project.org/doc/qt-5/qfiledialog.html#getOpenFileNames) – Bowdzone
왜 그렇습니까? 여러 파일을 선택하기 위해 파일 대화 상자의 내부 구현을 망쳐야한다고 생각하십니까? 이 코드는 혐오스럽지 않습니까? 파일 다이얼로그에는 내부적으로 Qt 구현이 없다는 것에 신경 쓰지 마라. 아마 윈도우즈 나 OS X 어느쪽에도 명목상의 시스템이 아닌 시스템에서 실행 중일 것이다. 'setFileMode (QFileDialog :: ExistingFiles)'로 충분하다. 왜 다른 해킹이 필요한가요? –
왜 그 디렉토리에 관심이 있습니까? 반환 된 파일이 절대 경로 또는'directory()'와 관련하여 상대 경로를 갖는 한, 당신은 괜찮습니다. 실제로 정확한 디렉토리를 신경 쓸 필요가 없습니다. –