2014-01-12 9 views
1

인 것 같습니다. Windows의 자동 시작에서 내 응용 프로그램을 시작할 때 Qt에서 열 수 없습니다. 이 오류는 QDir().absoluteFilePath("settings.cnf") 내 파일이 내 작업 디렉터리에있는 경우에도 C:/Windows/system32/settings.cnf 경로를 반환합니다.Windows-Autostart : 응용 프로그램 디렉토리가 C :/Windows/system32/

누군가 올바른 경로를 얻기 위해 어떤 방법을 사용해야하는지 알고 있습니까?

+0

QCoreApplication :: applicationDirPath()는 무엇을 반환합니까? Windows 자동 시작 (내가 무엇인지 모르겠다)으로 응용 프로그램을 시작하면 응용 프로그램 작업 디렉토리가 system32 폴더로 설정됩니다. "응용 프로그램 실행 파일이있는 디렉토리"와 다를 수 있습니다. – azf

답변

1

기본 생성자 QDir()을 사용하면 사용자 또는 시스템이 응용 프로그램을 시작한 위치에 따라 현재 작업 디렉토리가 기본값이됩니다. UI 애플리케이션의 경우, 이는 일반적으로 완전히 무시해야하는 경로입니다.

응용 프로그램 바이너리 옆의 데이터에 액세스하려면 QCoreApplication::applicationDirPath()을 사용하십시오. 일반적으로 프로그램과 함께 설치된 전역 읽기 전용 데이터에 사용됩니다.

사용자가 쓸 수있는 구성 설정 및 캐시 된 데이터의 경우 QStandardPaths (Qt 5) 또는 QDesktopServices::storageLocation() (Qt 4)을 사용하십시오.

+0

감사합니다. 'QCoreApplication :: applicationDirPath() + "/ settings.cnf"나를 위해 일합니다. –

1

GUI 프로그램의 작업 디렉토리를 정의 할 특별한 이유는 없습니다. 상대 경로는 작업 디렉토리에 상대적이므로 상대 경로를 사용하면 잘 정의되고 의미있는 작업 디렉토리가 사용됩니다.

이제 실제로 실행 파일과 동일한 디렉토리에서 파일을 찾고 싶습니다. 따라서 올바른 방법은 실행 파일의 전체 경로를 찾아 파일 이름을 제거하고 파일 이름을 추가하는 것입니다. 이제 파일의 전체 경로가 나타납니다.

일반적으로 작업 디렉토리는 콘솔 응용 프로그램에서만 의미가 있습니다. 따라서 콘솔 응용 프로그램에서만 상대 경로를 사용하십시오.