2015-01-28 2 views
1

pdf 리더가 설치되어 있는지 확인하고 싶습니다. 아이디어는 QDesktopServices::openUrl("path/test.pdf")을 사용하고 반환 값이 "false"이면 pdf-reader가 설치되어 있지 않다는 것을 알고있었습니다. 문제는 pdf-reader가 설치되면 pdf가 열린다는 것입니다. 그걸 "비활성화"할 수 있습니까?PDF 리더가 설치되어 있는지 확인하십시오. QDesktopServices :: openUrl()

/편집 : 내 솔루션 :

QSettings settings("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.pdf\\OpenWithProgids", QSettings::NativeFormat); 
if (settings.allKeys().size() == 0) {...} 
+0

PDF 리더 란 무엇입니까? Adobe Acrobat Reader? – vahancho

+0

QDesktopServices :: openURL()은 * .pdf 파일에 사용하는 표준 프로그램을 호출합니다. 그래서 AdobeAcrobat 리더가 될 수 있지만 다른 프로그램 일 수도 있습니다. – knuut

답변

1

내가 그 "해제"를 할 수 있나요?

간단한 대답입니다.

QDesktopServices :: openUrl은 시스템에 관련 프로그램이있는 파일을 열 것인지 묻는 메시지이므로 Qt를 통해 파일을 열 수 없습니다.

권장 사항은 아니지만 플랫폼별로이 기능을 사용 중지 할 수 있지만 해당 경로를 사용하지 않는 경우 각 플랫폼의 자체 기능을 사용하여 pdf 데이터 파일과 연결된 애플리케이션이 있는지 확인하는 것이 좋습니다.

Windows의 경우 registry에 저장되며 OS X는 LaunchServices을 사용합니다.

그러나 파일 연결이 없기 때문에 pdf를 여는 데 적합한 응용 프로그램이 설치되어 있지 않다는 의미는 아닙니다.

pdf를 표시하려면 프로그램에서 직접 처리하는 것이 좋습니다. 그 here에 대한 몇 가지 옵션을 읽을 수 있습니다.

+1

감사! 이제 레지스트리를 사용하여 문제를 해결합니다. 내 첫 번째 게시물에 내 솔루션을 추가합니다. – knuut