當我啓動程序時,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();
}
}
你能說我在做什麼錯誤嗎?如何獲得fieldialog當前所在目錄的絕對路徑?
您有使用這種複雜方法的原因,而不是[一次調用靜態方法嗎?](http://qt-project.org/doc/qt-5/qfiledialog.html#getOpenFileNames) – Bowdzone
爲什麼你認爲你需要搞亂文件對話框的內部實現,只是爲了選擇多個文件?這段代碼看起來不可惡嗎?不要介意文件對話框名義上沒有內部的Qt實現 - 你可能運行在一個系統上,但是在Windows和OS X上,這都是名義上的情況。 'setFileMode(QFileDialog :: ExistingFiles)'就足夠了。爲什麼你需要這些其他黑客? –
你爲什麼不介意它是什麼目錄?只要返回的文件具有絕對路徑,或者相對於'directory()'的相對路徑,你就可以,不需要關心它的確切目錄。 –