2012-02-14 2 views
3

내가 그렇게 같은 QFileDialog을 여는 인 QDialog이 : 불행하게도QFileDialog에서 덮어 쓰기를 표시하도록하려면 어떻게해야합니까?

QFileDialog fd(this); 
fd.setFileMode(QFileDialog::AnyFile); 

if (fd.exec()) { 
    // save data to a file 
} 

the default behavior은 아주 기본 있도록 될 것 같지 않습니다, 내가 파일을 선택하면 파일 대화 상자가 덮어 쓰기에 대해 나 메시지를 표시하지 않습니다 이미 존재 함. setConfirmOverwrite(true) 또는 setOption(QFileDialog::DontConfirmOverwrite, false)을 먼저 호출해도 도움이되지 않습니다. 우분투 11.04 및 Windows XP에서 Qt 4.7.3 및 4.7.4에서이 두 가지를 테스트했습니다.

주위를 둘러 보니 this bug report이 발견되었습니다. QFileDialog::getSaveFileName()에는이 문제가 있지만 Maemo에만 해당되며 Qt 4.7.3이 출시되기 전에 잘 고쳐졌습니다. 내 응용 프로그램에서 그 방법을 사용하면 정상적으로 작동하며 파일을 덮어 쓸 것인지 묻는 메시지가 나타납니다. (관련이없는 이유로 getSaveFileName()을 사용하고 싶지 않습니다.)

나는 이것들이 효과가 없다고 불평하는 사람을 찾을 수 없습니다. 내가 잘못했거나 버그입니까? 대화 상자가 단순한 열기 대화 상자인지 아닌지 알지 못하기 때문에 대화 상자가 표시되지 않을 수 있습니다. 대화 상자에 확인 - 덮어 쓰기 옵션을 설정하지 않고 저장 대화 상자를 표시하는 방법이 표시되지 않습니다. 실패하면) 이 기본적으로 메시지를 표시해야한다고 말합니다.

+1

Qt 4.8.0에서 동일한 문제가 발생했습니다. –

답변

5

열기 모드에서 파일을 덮어 쓰지 않는다고 생각하지 않으므로 대화 상자가 저장 모드에 있어야합니다. 코드 예에서 fd.setAcceptMode(QFileDialog::AcceptSave);을 호출하여이 작업을 수행 할 수 있습니다. QFileDialog::acceptMode을 참조하십시오.

+0

완벽합니다. 감사합니다. 내가 어떻게 그것을 놓쳤는지 모르겠다. 나는 SO 계정을 등록하고 주위에 붙어 있기를 바랍니다 :) –