2012-08-14 4 views
2
내가 Qt의 storageLocation 기능을 사용하여 리눅스에서 응용 프로그램 데이터 폴더 위치를 얻기 위해 노력하고 있어요

:응용 프로그램 데이터 리눅스 사용 Qt는 QDesktopServices에서 폴더 :: storageLocation

QDesktopServices::storageLocation(QDesktopServices::DataLocation) 

을하지만이 기능은 마지막에 두 개의 슬래시와 경로를 반환 :

/home/user/.local/share/data// 

경로 끝의 두 개의 슬래시가 매우 이상하게 보입니다. 이게 정상인가? 아니면 Qt의 버그입니까? 제 리눅스는 우분투입니다. Qt 버전은 4.8.1입니다.

답변

3

이것은 Qt의 버그입니다 (bug report 참조). 그러나 앱의 이름과 조직 이름을 설정하지 않은 경우에만 발생합니다. QApplication::setApplicationNameQApplication::setOrganizationName을 사용하여 설정해야합니다.

이전에 허용 한 해결책 인 chop은 두 가지 이유로 불량입니다. 첫 번째,이 버그가 수정되면 코드가 손상 될 수 있습니다. 다음 버전 (아마 0)에 얼마나 많은 깎기가 있을지 누가 ​​알 수 있습니까?

QString s = QDesktopServices::storageLocation(QDesktopServices::DataLocation); 
s = QDir(s).absolutePath(); 

을하지만 그것은 /home/user/.local/share/data/ 위치는 여전히 유효 것이 더욱 중요하다 : 나는 이중 슬래시를 제거하려면 다음을 사용하는 것이 좋습니다 것입니다. 적절한 위치를 원하면 응용 프로그램 및 조직 이름을 설정해야합니다. 단순한 후행 슬래시를 제거해도 아무 것도 고치지 않습니다. 단지 더러운 해킹 일뿐입니다.

+0

+1인지 확인해도됩니다. _Qt_에서 누가 그 길을 만들었습니까? 그것이 _Linux_에서'$ HOME/.local/share /'를 하드 코딩하는 이유입니다. – abergmeier

0

여기에 나와 같은 것은 아닙니다. 당신은 단지 마지막 문자

QString s = QDesktopServices::storageLocation(QDesktopServices::DataLocation); 
s.chop(1); 
+0

Qt의 버그처럼 보입니다. –

+0

잘 모르겠습니다. 나는 이것과 관련된 버그 리포트를 보지 않을 것이다. 버그 리포트에 대한 링크가 있다면 알려 주시길 바랍니다. –

+1

예, 관련된 버그 보고서를 찾았습니다 : https://bugreports.qt-project.org/browse/QTBUG-10772 –

1

나는 그것이 오래된 질문 알고 있지만 QDesktopService::dataLocation는 다음과 같은 구조 <user data location>/<application name>/이에게 잘라해야합니다.

리눅스에서 사용자 데이터 위치는 $HOME/.local/share/data/입니다.

응용 프로그램 이름은 QCoreApplication::setApplicationName() 메서드를 통해 설정됩니다. 사용자가 설정하지 않으면 추측 슬래시가 두 개인 이유가 무엇인지 설명합니다.

관련 문제