2013-06-15 2 views
2

나는이 문제에 대한 단서를 찾기 위해 얼마 동안 결과를 찾지 못했습니다. 그럼, 여기에 간다 ...Windows 용 QT4에서 일반 파일 선택 대화 상자를 만드는 방법

나는 파일 대화 상자 창을 여는 간단한 버튼을 갖고 싶은 응용 프로그램이있다. 기본 창에는 파일을 읽거나 작성/쓰는 다른 버튼이 있습니다 (선택한 기능에 대한 적절한 검사를 한 후). 문제없이 QFileDialog :: getSaveFileName() 함수를 사용했지만 Windows 7에서는 파일이 존재하고 읽기 전용 인 경우이 작업이 실패합니다. 이 문제를 해결하기 위해 getOpenFileName()으로 전환했지만 사용자가 존재하지 않는 파일을 선택하려고하면 파일 대화 상자가 실패합니다 (저장 작업과 관련 없음).

파일 대화 상자에 "새 파일 만들기"아이콘을 추가하거나 파일 대화 상자 창의 오른쪽 클릭 메뉴에 추가하는 방법이 있습니까? 정말 (또 다른) Windows 동작 변경 때문에 응용 프로그램을 다시 작성해야하는 것을 싫어할 것입니다.

+0

"실패"란 무엇을 의미합니까? 프로그램이 실패하거나 Windows에서 실패합니다. 이미 존재하고 읽기 전용으로 표시된 파일에 쓰기를 원한다면 Windows에서 허용하지 않을 것입니다. 이것은 실패가 아니며 성공입니다. 파일을 수정하기 전에 항상 견제와 균형을 유지해야합니다. – RobbieE

+0

실패하면 ok를 클릭하면 대화 상자에 오류가 발생하고 계속할 수 없습니다. getSaveFileName 및 읽기 전용 파일의 경우 오류는 "파일이 읽기 전용이고 선택할 수 없습니다."와 같습니다. 새 파일 및 getOpenFileName의 경우 오류는 "파일이 없습니다."입니다. 두 경우 모두 파일 대화 상자로 돌아가서 원하지 않는 파일을 선택하거나 취소해야합니다. – GrueMaster

+0

여기에 응답이 없으면 (매우 놀랍습니다.) 필자가 직접 파일 대화 상자를 만들어야 할 것 같습니다. 필자는 본질적으로 아무것도하지 않고 호출 함수에 파일 이름을 반환하지만 api 호출을 기반으로 제한을 만드는 두 개의 개별 파일 대화 상자 API 호출을하는 것을 정말 싫어합니다. 동일한 결과를 산출 할 수있는 여러 옵션을 가진 단일 함수로이 값이 훨씬 더 좋습니다. – GrueMaster

답변

1

QFileDialog::getOpenFileName()은 기존 파일을 여는 데만 사용해야합니다. 존재하지 않는 파일의 이름을 입력하면 시스템에서 오류가 발생하지만 이는 올바른 행동입니다. 존재하지 않는 파일을 열 수 없다는 것을 정확하게 알려줍니다. 당신이 읽기 전용 운영 체제로 표시되어 기존 파일에 쓰기를 시도하는 경우

기존 파일에 기록하거나 새 파일을 만들려면

, 당신은 QFileDialog::getSaveFileName()

를 사용한다 파일이 읽기 전용이라는 오류가 발생하면 오류가 올바른 것입니다. 읽기 전용 파일에 쓰는 것을 허용해서는 안됩니다. 읽기 전용이란 의미입니다.

설명해 주신 내용에 오류가 없습니다. 그것이해야하는대로 모든 일이 일어나고 있습니다. 시스템이 다른 무언가를하도록 강요하려는 경우에는하지 마십시오. 당신은 오히려 다른 방식으로 일을 시도하고 생각해야합니다.

+0

따라서 "어떻게 파일 대화 상자에 기능을 추가 할 수 있습니까?" getOpenFileName 및 getSaveFileName의 예상되는 동작을 이미 알고 있습니다. 프로그램이 내부적으로 열기를 수행하기 때문에 getFileName 만 필요합니다. – GrueMaster

관련 문제