2016-07-17 1 views
0

사용자의 선택에 따라 저장된 파일의 확장자를 설정합니다QFileDialog : - 내가있는 내가 (QT 4.8로 작성된 서식있는 텍스트 편집기의) 다음 코드를 일하고 있어요 한

bool TextEdit::fileSaveAs() 
{ 
    QString fn = QFileDialog::getSaveFileName(this, tr("Save as..."), 
               QString(), tr("ODT document (*.odt);;HTML-Files (*.htm *.html)"), 0, QFileDialog::DontUseNativeDialog); 

    if (fn.isEmpty()) 
     return false; 
    if (! fn.endsWith(".txt", Qt::CaseInsensitive) || (fn.endsWith(".odt", Qt::CaseInsensitive) || fn.endsWith(".htm", Qt::CaseInsensitive) || fn.endsWith(".html", Qt::CaseInsensitive))) 
     fn += ".odt"; // default 
    setCurrentFileName(fn); 
    return fileSave(); 
} 

저장 대화 상자 창에서 * .odt와 * .html 확장자 중 하나를 선택할 수 있습니다. 그러나 기본적으로 * .odt 확장자는 항상 설정됩니다 (fn + = ".odt"참조).

http://funkyimg.com/i/2efhs.png

: 나는 HTML로이 일을 변경할 수 있다는 것을 알고,하지만 난 코드 안에 설정 강제 확장을 없애하고 문서를 수 있도록하는 것을 목표로는 저장 대화 상자 창에서 선택한 확장자로 저장합니다

어떻게하면됩니까? 누군가 내가 코딩에 관한 초보자라는 점을 감안할 때 실용적인 예를 제안 해 줄 수 있습니까?

답변

1

selectedfilter 인수와 함께 또 다른 생성자를 사용하여, 그 결과는

QString selectedFilter; 
QString fn = QFileDialog::getSaveFileName 
    (this, 
    tr("Save as..."), 
    QString(), 
    tr("ODT document (*.odt);;HTML-Files (*.htm *.html)"), 
    0, 
    QFileDialog::DontUseNativeDialog, 
    &selectedFilter); 
+0

당신은 selectedFIlter QString에서 선택한 사용자가 입력 한 내용을 파일을 얻을 수있을 것이다. QString :: contains() 함수를 사용하여 일치하는 문자열을 확인하십시오. if (fn.contains (". odt"))와 같이 –