qml (Qt 버전 5.6 사용)의 파일 대화 상자에 마지막으로 사용한 폴더를 저장하려고합니다. 내가 할 방법은 같은 url 속성 lastUsedFolder
을 가지고 QSettings 통해 :QML의 UNC 경로에서 FileDialog의 폴더를 설정하는 방법은 무엇입니까?
/////////////
/// myApp.qml
/////////////
import QtQuick 2.3
import QtQuick.Dialogs 1.1
import Qt.labs.settings 1.0
Settings {
id: settings
property url lastUsedFolder;
}
FileDialog {
id: openDialog
onVisibleChanged:
{
if(visible && myApp.doesFolderStillExist(settings.lastUsedFolder))
{
console.log("setting folder of dialog")
folder = settings.lastUsedFolder
console.log(folder)
}
}
onAccepted:
{
console.log("saving folder: " + folder)
settings.lastUsedFolder = folder;
}
}
/////////////
/// myApp.cpp
/////////////
bool myApp::doesFolderStillExist(QUrl folderUrl)
{
QFileInfo folder(folderUrl.toLocalFile());
if (folder.exists())
return true;
return false;
}
이 로컬 파일로 작업 할 때 충분히 잘 작동하지만 UNC 형식의 경로에 의해 해결 원격 컴퓨터에서 사용하지 않는 파일을 수행 예 : \\myRemotePC.somewhere.com\myData\
.
이 주소로 이동하여 대화 상자를 수락하면 onAccepted 메서드 덕분에 폴더가 저장되고 콘솔에는 saving folder: file://myRemotePC.somewhere.com/myData
이 인쇄됩니다. 그런 다음 대화 상자를 다시 열면 onVisibleChanged가 트리거됩니다. doesFolderStillExists
메서드는 폴더를보고 - QUrl.toLocalFile이 작동하는 것처럼 보입니다 - 또한 settings.lastUsedFolder
의 저장된 경로는 저장된 것과 동일합니다. , 즉
QWindowsNativeFileDialogBase::shellItem: SHCreateItemFromParsingName(file:///myRemotePC.somewhere.com/myData) failed()
:; 그러나 다음과 같은 오류와 함께 folder
속성에 할당하는 줄에 응용 프로그램 충돌 (Windows 7의 마지막 콘솔 인쇄 단지 "대화 상자의 설정 폴더"입니다) 전에 대화 상자의 폴더 속성을 설정하려고 할 때 충돌이 발생합니다.
확실하지 않은 점은 하나의 이상한 점은 file:
뒤에 세 개의 슬래시가 있으며 폴더로 설정하는 경로는 두 개 뿐이라는 점입니다. 나는 여러 가지의 경로 수정을 시도 : -의
file:
가 완전히 생략 된 경우
- 을 대화 아마 의미있는 방법으로 주소를 구문 분석하는 데 실패, 기본 위치에서 열립니다 아무리 내가
file:
후 추가하거나 제거 슬래시 얼마나 많은 기대 같은 오류 메시지가 내가 저장하고 다시 할 수있는 날을 이끌만한 조언을 부탁드립니다
표시된 경로에있는 세 개의 슬래시와 함께 항상 나타납니다 "FileDialog"에서 마지막으로 사용 된 폴더를 "local"및 "local"모두에 사용할 수있는 방법으로 사용합니다. UNC 경로는 비록 우리가 현재 사용하고있는 것과는 다른 방식으로 수행되었다고하더라도.
C++ 측에서 대화 상자를 실행하는 것은 아마도 선택 사항이지만 꽤 좋은 방법이지만 더 나은 방법이 있기를 바랍니다. 감사합니다.원격 위치를 드라이브로 연결하면 문제는 해결되지만 문제는 해결되지 않습니다. 네트워크 드라이브를 사용할 때 소프트웨어가 충돌하고 사람들이 네트워크 드라이브를 많이 사용하는 Google 지원팀에 계속 편지를 보냅니다. 경로가 UNC인지 확인해 볼 수는 있지만 UNC가 "기억"하지는 않지만 사용자로부터 약간의 편의를 얻고 있습니다. – tomj
하지만 그렇지 않으면 동의합니다. FileDialog가 onFolderChanged 중에 경로의 일종의 변환/수정을 수행하고 있지만 UNC 경로를 고려하지 않은 것 같습니다 ( – tomj
) https : // bugreports. 버그를 제출했습니다. qt.io/browse/QTBUG-63710 –