2014-05-17 3 views
2

Qt Creator 내에서 동일한 빌드를 실행할 때와 Mac에서 Finder에서 두 번 클릭 할 때 두 개의 다른 경로가 표시됩니다. 여기 QDir absolutePath on Mac

내 코드입니다 : Qt는 창조주

QDir dir = QDir::currentPath(); 
dir.cdUp(); 
dir.cdUp(); 
dir.cdUp(); 
QString rootPath = dir.absolutePath(); 

나는 그것을 실행 (디버그) 모드 내 경로는 다음과 같습니다

/사용자/참고 MyUser/프로젝트가/프로그램 응용/빌드/맥

/Users/myyser/Projects/AppName/build/mac에있는 파일을 찾기에서 두 번 클릭하면 /를 반환합니다.

두 가지 경로가 필요한 이유는 무엇입니까?

버전 : //qt-project.org/forums/viewthread/34019

+0

Kuba Ober가 말했듯이 작업 디렉토리는 GUI 응용 프로그램에서 사용하지 마십시오. 바이너리가있는 경로를 원하면 http://qt-project.org/doc/qt-5/qcoreapplication을 사용하십시오.html # applicationDirPath –

답변

1

왜 두 개의 다른 경로가 있습니까?

QDir :: currentPath()가 연결된 스레드에서 쓰는 것처럼 반드시 응용 프로그램 디렉토리를 반환하지는 않습니다. 명령 줄에서 응용 프로그램을 실행하거나 "시작 메뉴"같은 장소에서 응용 프로그램을 실행할 때 응용 프로그램이 실행되는 모든 위치에서 응용 프로그램 디렉터리와 다른 경로를 반환합니다. 당신이 거기에서 탐색 응용 프로그램 디렉토리를 처리하고자하는 경우

대신 다음과 같은 방법을 사용해야합니다 :

QString QCoreApplication::applicationDirPath() [static]

은 응용 프로그램 실행 파일이 들어있는 디렉토리를 돌려줍니다.

예를 들어, C : \ Qt 디렉토리에 Qt를 설치하고 regexp 예제를 실행하면이 함수는 "C :/Qt/examples/tools/regexp"를 반환합니다.

Mac OS X에서는 실행 파일이 실제로 들어있는 디렉토리를 가리키며, 응용 프로그램 번들 내부에있을 수 있습니다 (응용 프로그램이 번들 된 경우).

마지막 문장은 Mac OS X 사례를 명확히합니다.

+0

트릭을 한 정보를 제공해 주셔서 감사합니다. – adviner

1

현재 : Qt5.2.1

업데이트

는 다음 URLhttp을 읽고 그 벌레처럼 보인다 디렉토리는 무엇이든 될 수 있으며 프로세스가 시작되는 방법에 따라 다릅니다. 지금까지 보여준 내용은 Qt Creator와 Finder가 다른 현재 디렉토리로 프로세스를 시작한다는 것입니다.

currentPath으로 설정하지 않고 처음으로 설정하면입니다. 명령 줄/콘솔 응용 프로그램에 있습니다. 왜 당신이 그것을 사용해야한다고 생각하니? 어떤 목적으로?