2016-07-17 21 views
0

我有以下代碼(寫在QT 4.8富文本編輯器),其上我的工作:QFileDialog: - 根據用戶的選擇設置擴展到保存的文件

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」)。 我知道,我可以改變這一個HTML,但我的目標是擺脫強制拉伸的代碼中設置的,讓文件被保存在保存對話框窗口中選擇的分機:

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

我該如何做到這一點?考慮到我是編碼方面的新手,有人可以給我一些實際的例子嗎?

回答

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」)) –

相關問題