2011-08-29 3 views
4

Win32 함수 GetSaveFileName에 사용 된 OPENFILENAME 구조체의 lpstrDefExt 멤버에 해당하는 항목이 있습니까?QFileDialog :: getSaveFileName에 기본 확장명을 지정하십시오.

다음은 MSDN에서 설명입니다 :

LPCTSTR lpstrDefExt

기본 확장. GetOpenFileName 및 GetSaveFileName은 사용자가 내선 번호를 입력하지 못한 경우이 확장명을 파일 이름에 추가합니다. 이 문자열의 길이는 제한되지 않지만 처음 세 문자 만 입니다. 문자열에 마침표 (.)가 없어야합니다. 이 멤버 이 NULL이고 사용자가 내선 번호를 입력하지 못하면 내선 번호는 이 추가되지 않습니다.

그래서 lpstrDefExt가 설정되어있는 경우 "TXT"사용자 유형 "은 myfile"대신 "MYFILE.TXT"에, ​​함수는 여전히 "MYFILE.TXT"를 반환합니다. 정확히 LPCTSTR lpstrDefExt가 시도되지만 Qt는 설명서를 지정한 경우의 Qt는 "selectedFilter"매개 변수에서 기본 확장을 추출합니다 다음 예를

QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"), 
          "/home/jana/untitled.png", 
          tr("Images (*.png *.xpm *.jpg)")); 

http://doc.qt.io/qt-5/qfiledialog.html#getSaveFileName

답변

6

을주는 무슨

+0

이것은 나를 위해 작동하지 않으며 설명서에서 그러한 사용에 대한 참조를 할 수 없습니다. 포인터를 보내 주시겠습니까? –

+0

나를 위해 작동하지 않습니다 (Linux) – oLen

1

확실하지. 여기

은 예입니다

QString filter = "Worksheet Files (*.abd)"; 
QString filePath = QFileDialog::getSaveFileName(GetQtMainFrame(), tr("Save Worksheet"), defaultDir, filter, &filter); 

사용자가 대화 상자에서 하나를 지정하지 않은 경우 getSaveFileName() 메소드가 자동으로 ".abd"파일 확장명을 추가 할이 코드를 사용. "qfiledialog_win.cpp"Qt 소스 파일 내의 qt_win_get_save_file_name()에서이 구현을 볼 수 있습니다.

불행히도 getOpenFileName() 메소드에서는 작동하지 않습니다.

+1

메모장에서 파일 저장 대화 상자가 나타나고 'a.txt'대신 'a'만 입력하면 생성 된 파일이 'a'가 아닙니다. (즉, 확장자없이) 'a.txt'가됩니다. – sashoalm